重写规则不';不能工作Apache1.3

重写规则不';不能工作Apache1.3,apache,mod-rewrite,apache-1.3,Apache,Mod Rewrite,Apache 1.3,我正在使用一些重写指令,这些指令以前在apache2上总是有效的,但现在尝试一个新的共享主机,重写规则似乎没有得到应用 我已将.htaccess文件简化为以下基本规则: RewriteEngine On Rewritebase /demo/ RewriteRule ^(.*)$ index.php/$1 [L] 如您所见,我希望将每个请求从根目录重写到demo文件夹中的index.php文件 因此,对于标准MVC设置,所有类似的内容都应该由处理。(顺便说一句,我正在使用CodeIgniter

我正在使用一些重写指令,这些指令以前在apache2上总是有效的,但现在尝试一个新的共享主机,重写规则似乎没有得到应用

我已将.htaccess文件简化为以下基本规则:

RewriteEngine On
Rewritebase /demo/

RewriteRule ^(.*)$ index.php/$1 [L]
如您所见,我希望将每个请求从根目录重写到demo文件夹中的index.php文件

因此,对于标准MVC设置,所有类似的内容都应该由处理。(顺便说一句,我正在使用CodeIgniter)

上面的指令导致了500个错误,所以我认为可能是因为1.3和2.x之间可能存在一些语法差异

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

  • 你知道为什么我的重写规则不起作用吗?它以前在很多不同的服务器上运行过
  • 如何修复它的建议

注意:mod_rewrite确实有效,我已经编写了一个小测试来确保。

在您的位置上,我可能会先查看Apache错误日志,然后尝试通过执行

RewriteEngine On
RewriteRule ^/demo/index.php$ /demo/index.php [L]
RewriteRule ^/demo/(.*)$ /demo/index.php/$1 [L]
如果成功的话,我会尝试重新引入RewriteBase。

您是否设置了:

Options +FollowSymLinks

…在重写规则之前?如果禁用了
FollowSymLinks
,则mod\u rewrite将无法工作。

这可能是因为
index.php/…
也与
^(.*$
匹配,所以您正在运行一个无限递归。因此,尝试排除您的目标:

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

谢谢,很好的提示,我已经删除了RewriteBase指令,这将导致root…/demo/的200响应,但任何其他结果都会导致apache的普通旧404(从日志中可以看出,不是由我的脚本处理的)。我在上面添加了一个重写规则,以避免意外重写。有一种方法可以用一秒来完成,但那需要咖啡。