【问题标题】:How to use mod_rewrite to ignore a second variable if empty如果为空,如何使用 mod_rewrite 忽略第二个变量
【发布时间】:2013-02-17 04:25:40
【问题描述】:

我正在尝试在我的 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=

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

谢谢!

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    想通了。通过将更具描述性的语句放在首位来翻转 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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-23
      • 2021-12-17
      • 1970-01-01
      • 2018-06-11
      • 2015-12-14
      • 2018-07-18
      • 2014-06-27
      • 1970-01-01
      相关资源
      最近更新 更多