友好的网址无法正常工作 - 启用了modrewrite。是什么赋予了?

时间:2009-11-20 04:13:29

标签: mod-rewrite silverstripe

我正在尝试安装SilverStripe,在安装过程中,它会返回一条错误消息,指出友情链接无效。但是启用了mod_rewrite并且AllowOverride设置为All。我在专用服务器上使用CentOS Linux,其中Webmin作为cp(是的,我知道......不是我的选择)。

3 个答案:

答案 0 :(得分:2)

即使您收到错误消息,安装程序也应该尽可能地进行设置。

这个问题有点难以回答,因为问题可能存在于许多不同的地方,但我试图将下面的故障排除指南放在一起。

注意:以下许多链接都是故意破坏的,因为Stack Overflow认为我可能是垃圾邮件发送者。 ; - )

假设您的网站位于http:/www.example.com,请尝试访问http:/www.example.com/dev/build - 您应该会看到一个标题为“环境构建器(以前称为db / build)”的页面”。如果可行,那么重写没有问题,安装程序错误地给了你这条消息。

如果它给你404,请尝试http:/www.example.com/sapphire/main.php?url = dev / build - 这将访问相同的功能,但绕过mod_rewrite。如果这给你标题“环境构建器(以前的db / build)”而前一个URL没有,那么你有一个mod_rewrite的问题,而不是其他问题。

  1. 检查.htaccess文件的内容。它应该看起来像this但可能有RewriteBase行。
  2. 尝试放入一些垃圾文本 - 例如'asdfsahjadsfasdf' - 进入.htaccess文件并保存。打开您的网站。它会给你一个500错误吗?如果没有,那么您的AllowOverride All设置无效。检查您是否已将其设置在正确的位置。请记住 - 它需要在您的Apache配置文件中,而不是.htaccess。如果您无权访问相关配置文件,则可能需要请求ISP帮助您回答此问题。
  3. 如果这没有发现问题,我们将不得不修改重写规则,看看我们是否可以探索正在发生的事情。尝试更改此行:

    RewriteRule .* sapphire/main.php?url=%1&%{QUERY_STRING} [L]
    

    对此(它会将重写规则转换为重定向规则):

    RewriteRule .* sapphire/main.php?url=%1&%{QUERY_STRING} [L,R]
    

    再次访问http:/www.example.com/dev/build它是否重定向到任何地方?如果没有,则mod_rewrite不起作用。它应该重定向到http:/www.example.com/sapphire/main.php?url = dev / build。它是否重定向到其他地方?例如,是否在?url=参数中插入了额外的垃圾?如果您在子目录中运行SilverStripe,有时会发生这种情况。在这种情况下,请检查RewriteBase设置是否设置为该子目录。像RewriteBase /mysubdir

  4. 之类的东西

    如果你仍然无法获得友好的URL工作,那么恭喜你 - 你发现了一个非常讨厌的边缘案例!将您在上述步骤中发现的内容的详细信息发布到www.silverstripe.org上的SilverStripe IRC频道或论坛。

答案 1 :(得分:1)

步骤1.在.htaccess文件中放入一些垃圾,看看网络服务器是否出错。

答案 2 :(得分:0)

这里的重点是 - 假设服务器正在运行Apache - 是否实际上正在读取SS安装程序生成的.htaccess文件。如果您仍有问题,请尝试询问SS IRC频道。