.htaccess url重写中的可选参数
我正在使用apache和.htacess重写我的URL 我希望在我的ad.php页面中有一个可选参数“mess”。我写道:.htaccess url重写中的可选参数,.htaccess,url-rewriting,.htaccess,Url Rewriting,我正在使用apache和.htacess重写我的URL 我希望在我的ad.php页面中有一个可选参数“mess”。我写道: RewriteRule ^ad-([A-Za-z0-9-]+)/?$ ad.php?id=$1 [NC,L] RewriteRule ^ad-([A-Za-z0-9-]+)-([A-Za-z0-9-]+)/?$ ad.php?id=$1&mess=$2 [NC,L] 但似乎只考虑了第一条规则。ad-100和ad-100-1应该给
RewriteRule ^ad-([A-Za-z0-9-]+)/?$ ad.php?id=$1 [NC,L]
RewriteRule ^ad-([A-Za-z0-9-]+)-([A-Za-z0-9-]+)/?$ ad.php?id=$1&mess=$2 [NC,L]
但似乎只考虑了第一条规则。ad-100和ad-100-1应该给出不同的东西,但它们没有。当我删除第一条规则时,ad-100不再起作用(显然),ad-100-1现在起作用了,因为它采用了第二条规则
你知道我怎么能有可选的参数吗?我应该将这两条规则合并为一条吗?这应该可以:
RewriteCond %{REQUEST_URI} !ad\.php [NC]
RewriteRule ^ad-([^-]+)/?$ ad.php?id=$1 [NC,L]
RewriteCond %{REQUEST_URI} !ad\.php [NC]
RewriteRule ^ad-([^-]+)-([^/]+)/? ad.php?id=$1&mess=$2 [NC,L]
或者,如果只有一个参数时,mess
值为空没有问题,则可以对这两个参数使用一个规则。像这样:
RewriteCond %{REQUEST_URI} !ad\.php [NC]
RewriteRule ^ad-([^-]+)-?([^/]+)?/? ad.php?id=$1&mess=$2 [NC,L]
你试过把这两条规则交换一下吗?