重写规则不适用于apache 1.3

时间:2010-05-01 14:52:01

标签: apache mod-rewrite apache-1.3

我正在使用一些在apache2之前一直有效的重写指令,但现在尝试新的共享主机并且重写规则似乎没有得到应用。

我已将.htaccess文件缩减为以下基本规则:

RewriteEngine On
Rewritebase /demo/

RewriteRule ^(.*)$ index.php/$1 [L]

如您所见,我想从root用户的demo文件夹中重写每个请求到我的index.php文件。

因此http://www.example.com/demo/albums/show/1之类的所有内容都应由http://www.example.com/demo/index.php处理,以用于标准的MVC设置。 (我正在使用CodeIgniter btw)

上面的指令导致500错误,所以我想也许是因为1.3和2.x之间可能存在语法差异。

经过一些跟踪和错误编辑后,我发现重写规则本身有错,但我真的不明白为什么。

  • 为什么我的重写规则不起作用的任何想法?它之前在很多不同的服务器上都有过。
  • 建议如何解决?

注意:mod_rewrite确实有用,我写了一个小测试以确定。

3 个答案:

答案 0 :(得分:1)

在你的位置,我可能首先查看Apache错误日志,然后尝试通过执行来消除一个移动部件

RewriteEngine On
RewriteRule ^/demo/index.php$ /demo/index.php [L]
RewriteRule ^/demo/(.*)$ /demo/index.php/$1 [L]

如果有效,我会尝试重新引入RewriteBase。

答案 1 :(得分:1)

你有没有设置:

Options +FollowSymLinks

...在重写规则之前?如果FollowSymLinks被禁用,mod_rewrite将无效。

答案 2 :(得分:1)

由于index.php/…也与^(.*)$匹配,因此您可能会遇到无限递归。因此,请尝试排除目标:

RewriteCond $1 !^index\.php/
RewriteRule ^(.*)$ index.php/$1 [L]