0

我正在尝试安装 SilverStripe,在安装过程中,它返回一个错误,提示友好链接不起作用。但是 mod_rewrite 已启用并且 AllowOverride 设置为 All。我在以 Webmin 作为 cp 的专用服务器上使用 CentOS Linux(是的,我知道……不是我的选择)。

4

3 回答 3

2

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

这个问题有点难以回答,因为问题可能出在许多不同的地方,但我尝试在下面整理出故障排除指南。

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

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

如果这给了您 404,请尝试 http://www.example.com/sapphire/main.php?url=dev/build - 这将访问相同的功能,但绕过 mod_rewrite。如果这给了您“Environment Builder(以前称为 db/build)”的标题,而之前的 URL 没有,那么您的 mod_rewrite 有问题,而不是其他问题。

  1. 检查 .htaccess 文件的内容。它应该看起来像这样,但可能有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

如果您仍然无法使友好的 URL 正常工作,那么恭喜 - 您发现了一个非常糟糕的边缘案例!将您按照上述步骤发现的详细信息发布到 SilverStripe IRC 频道或 www.silverstripe.org 上的论坛。

于 2010-01-30T23:29:27.333 回答
1

第 1 步。在您的 .htaccess 文件中放入一些垃圾,看看 Web 服务器是否给您一个错误。

于 2009-11-20T04:20:42.943 回答
0

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

于 2009-12-19T06:05:21.663 回答