我正在使用一些在 apache2 上一直有效的重写指令,但现在我正在尝试新的共享主机,重写规则似乎没有应用。
我已将 .htaccess 文件简化为以下基本规则:
RewriteEngine On
Rewritebase /demo/
RewriteRule ^(.*)$ index.php/$1 [L]
正如您所看到的,我想从根目录重写对演示文件夹中的 index.php 文件的每个请求。
所以一切就像http://www.example.com/demo/albums/show/1应由http://www.example.com/demo/index.php用于标准 MVC 设置。(顺便说一下,我正在使用 CodeIgniter)
上述指令导致 500 错误,所以我认为可能是因为 1.3 和 2.x 之间可能存在一些语法差异。
经过一些尝试和错误编辑后,我发现重写规则本身有问题,但我真的不明白为什么。
知道为什么我的重写规则不起作用吗?以前在很多不同的服务器上都出现过这种情况。有什么建议可以解决吗?
笔记:mod_rewrite 确实有效,我写了一个小测试来确认
答案1
RewriteBase 在实际文件中的大小写是否正确?
规则是在 httpd.conf 的主要部分中还是在可能不需要初始斜杠 / 的块中?
答案2
您的 .htaccess 文件似乎状况良好,应该可以与 Apache 1.3 一起使用。
您是如何创建 .htaccess 的?如果我没记错的话,Apache 1.3 对换行符等比 Apache 2.x 更敏感,因此如果您使用 Windows 记事本或其他编辑器创建文件并使用 \r\n 作为换行符,则可能会导致内部服务器错误。
如果您有权访问 Apache 错误日志,请从中查看导致 Apache 出现问题的原因。