代码之家  ›  专栏  ›  技术社区  ›  Sander Versluys

重写规则不适用于Apache1.3

  •  1
  • Sander Versluys  · 技术社区  · 14 年前

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

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

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

    如您所见,我想从根目录将每个请求重写到demo文件夹中的index.php文件中。

    所以一切都像 http://www.example.com/demo/albums/show/1 应该由 http://www.example.com/demo/index.php 对于标准MVC设置。(我正在使用代码点火器BTW)

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

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

    • 为什么我的重写规则不起作用?它以前在许多不同的服务器上做过。
    • 建议如何修复?

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

    3 回复  |  直到 12 年前
        1
  •  1
  •   Dave W. Smith    14 年前

    在您的位置上,我可能会先查看Apache错误日志,然后尝试通过执行以下操作来消除一个移动部分

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

    如果成功的话,我会尝试重新引入rewritebase。

        2
  •  1
  •   fuxia    14 年前

    你设定了:

    Options +FollowSymLinks
    

    重写规则之前?如果 FollowSymLinks 已禁用mod撘rewrite won_t工作。

        3
  •  1
  •   Gumbo    14 年前

    可能是因为您在 index.php/… 也与 ^(.*)$ . 所以试着排除你的目标:

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