url重写中的可选参数

时间:2013-03-29 10:50:14

标签: .htaccess url-rewriting

我正在使用apache和.htacess来重写我的网址。

我想在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现在正在运行,因为它采用了第二条规则。

你知道我如何拥有可选参数吗?我应该将这两个规则合并在一起吗?

1 个答案:

答案 0 :(得分:2)

这应该有效:

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]