如果为空,如何使用mod_rewrite忽略第二个变量

时间:2013-03-02 19:38:57

标签: .htaccess mod-rewrite

我正在尝试在我的HTACCESS文件中设置mod_write来重写我的一个URL。我正在使用$ _GET将标记名称和可选页码(用于分页)传递给名为tags.php的文件。

以下是带有变量的文件名: tags.php?t = textname& s =#

(在上面的网址中,#是页码。)

我正在尝试使用mod_rewrite将网址写为 domain.com/tags/textname/#/ ,但我还想允许 domain.com/tags/textname/ 如果用户登陆第一页(不需要传递分页变量)。

这是我的mod_rewrite代码:

RewriteCond %{REQUEST_URI} !tags\.php    [NC]
RewriteRule ^tags/(.*)/$ /tags.php?t=$1 [NC,L]
RewriteRule ^tags/(.*)/(.*)/$ /tags.php?t=$1&s=$2 [QSA,NC,L]

当我访问 domain.com/tags/textname/ 时,代码可以正常运行。失败的地方是我尝试访问 domain.com/tags/textname/1 / 时,因为而不是mod_rewrite传递 tags.php?t = textname& s = 1 ,它传递 tags.php?t = textname / 1& s =

任何人都会看到我在第一次或第二次重写时出错,以防止第二条规则发挥作用?

谢谢!

1 个答案:

答案 0 :(得分:0)

想出来。通过首先放置更具描述性的语句来翻转RewriteRules。更新其他有此问题的人。

RewriteCond %{REQUEST_URI} !tags\.php    [NC]
RewriteRule ^tags/(.*)/(.*)/$ /tags.php?t=$1&s=$2 [QSA,NC,L] 
RewriteRule ^tags/(.*)/$ /tags.php?t=$1 [NC,L]