2011-05-31 169 views
2

在我的.htaccess文件中,我使用的mod_rewrite适用于某些Apache 2服务器,但不适用于其他服务器。例如,这改写所有工作的Apache2服务器上:htaccess mod_rewrite&apache2不重写正斜杠

RewriteRule ^index-stormwatch.html$ index.php?action=stormwatch 

但是,当我替换在像下面的mod_rewrite的斜线连字符...

RewriteRule ^index/stormwatch.html$ index.php?action=stormwatch 

...一些Apache 2的服务器会给我一个404错误(但不是全部)。我的mod_rewrite写入不正确,还是需要编辑httpd.conf文件(或其他文件),以便apache接受正斜杠'/'?所有提到的服务器都是Apache 2/php5。

回答

1

你可以像这样:

RewriteRule ^index/stormwatch\.html$ /index.php?action=stormwatch [NC,L,QSA] 

这应该采取URI /index/stormwatch.html

+0

照顾谢谢anubhava的协助和你的代码。不幸的是,我使用的Apache2服务器(可能还有其他)仍然不喜欢正斜杠'/',即使使用改进的代码。它很乐意重写连字符' - ',但不是正斜杠'/'。我认为Apache配置文件中的某些内容可能会导致问题。再次感谢你的帮助。非常感激。 – B6431 2011-05-31 22:17:22

+0

非常欢迎。请在Apache配置中启用RewriteLog,然后查看它为这种情况吐出了什么。 – anubhava 2011-05-31 22:23:27

+0

我启用了RewriteLog几分钟。用冒犯的网址创建一个日志,并注意4个不同的“操作”:1.add路径信息后缀2.strip每个目录前缀3.applying模式4.pass through。这是我第一次尝试创建和读取日志文件。可能需要一些时间,直到我完全理解每个动作。 strip per-dir前缀听起来像是不应该发生的事情。无论如何,谢谢anubhava教我关于RewriteLog文件。我将继续学习,直到我对重写日志有很好的理解。 – B6431 2011-06-02 02:21:36