0

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

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

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

我正在尝试使用 mod_rewrite 将 URL 写入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=

有人看到我在第一次或第二次重写时做错了什么以防止第二条规则起作用吗?

谢谢!

4

1 回答 1

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]
于 2013-03-02T22:54:37.677 回答