Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess url重写中的可选参数_.htaccess_Url Rewriting - Fatal编程技术网

.htaccess url重写中的可选参数

.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应该给

我正在使用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应该给出不同的东西,但它们没有。当我删除第一条规则时,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]

你试过把这两条规则交换一下吗?