【问题标题】:Mod_Rewrite rule doesn't seem to be working with server queriesMod_Rewrite 规则似乎不适用于服务器查询
【发布时间】:2011-11-01 11:45:16
【问题描述】:

我一直在努力解决似乎不起作用的 mod_rewrite 规则。简而言之,我想要以下网址: www.servername.com/showtest/1 重定向到: www.servername.com/showtest.php?id=1

我认为我的 .htaccess 中的以下内容应该可以使重定向正常工作:

RewriteEngine On
RewriteRule ^showevent/(\w+)/?$  showevent.php?id=$1 [L,R,QSA]

但是,它似乎不起作用,据我所知,PHP 中的 $_GET 和 $_REQUEST 变量都是空的。

我尝试进行一些调试,包括各种不同的正则表达式。我还打开了 mod_rewrite 日志记录以环顾四周(我正在本地服务器上工作)。这些是相关的行:

127.0.0.1 - - [01/Nov/2011:12:25:55 +0100] [127.0.0.1/sid#b7843948][rid#b76d0058/subreq]   (1) [perdir /var/www/1277/] pass through /var/www/1277/showevent.php
127.0.0.1 - - [01/Nov/2011:12:25:55 +0100] [127.0.0.1/sid#b7843948][rid#b76db058/initial] (3) [perdir /var/www/1277/] add path info postfix:    /var/www/1277/showevent.php -> /var/www/1277/showevent.php/1
127.0.0.1 - - [01/Nov/2011:12:25:55 +0100] [127.0.0.1/sid#b7843948][rid#b76db058/initial] (3) [perdir /var/www/1277/] strip per-dir prefix: /var/www/1277/showevent.php/1 -> showevent.php/1
127.0.0.1 - - [01/Nov/2011:12:25:55 +0100] [127.0.0.1/sid#b7843948][rid#b76db058/initial] (3) [perdir /var/www/1277/] applying pattern '^showevent/(\w+)/?$' to uri 'showevent.php/1'
127.0.0.1 - - [01/Nov/2011:12:25:55 +0100] [127.0.0.1/sid#b7843948][rid#b76db058/initial] (3) [perdir /var/www/1277/] add path info postfix: /var/www/1277/showevent.php -> /var/www/1277/showevent.php/1

看来,不是重写为showevents.php?id=1,而是重写为showevent.php/1

我欢迎您提供任何帮助。

【问题讨论】:

    标签: php apache mod-rewrite


    【解决方案1】:

    它确实发生了,因为您在重写规则中使用了标志。你想改变

    [左、右、QSA] 只是“[L]”

    参考http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriteflags

    【讨论】:

    • 即使只有 [L] 作为标志,它也在做同样的事情(即仍然重写为 showevent.php/1)
    • 那么可能是选项“MultiViews”。在 apache 中启用 MultiViews 后,如果该文件存在,“/example”的计算结果为“/example.php”。禁用它或更改重写字或文件名以进行测试。
    猜你喜欢
    • 2019-03-18
    • 1970-01-01
    • 2010-10-07
    • 2012-12-24
    • 1970-01-01
    • 2016-04-29
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多