重写规则对 apache 1.3 不起作用

重写规则对 apache 1.3 不起作用

我正在使用一些在 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 出现问题的原因。

相关内容