rewriterules +httpd.conf +.htaccess 问题(紧急站点关闭)

rewriterules +httpd.conf +.htaccess 问题(紧急站点关闭)

我正在将我的一个网站从 dreamhost shared 迁移到 dreamhost ps。文件复制成功,DNS 解析到新服务器。但是尝试获取 pagw 时出现错误 403 访问被禁止。

如果我从网站目录中删除 .htaccess 文件,主页可以正常加载,但其他页面自然无法加载(因为它需要重写 .htaccess 中当前定义的内容)。

我相信 httpd.conf 会阻止在新服务器中使用 .htaccess。引用:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

我尝试删除 htaccess 并在 httpd.conf 中实施重写规则,但没有成功。

我的问题:1. 我尝试使用 AllowOverride All 来使 .htacces 工作。它没有改变任何东西。还应该检查/做什么才能使其工作?

  1. 我在 httpd.conf 中创建了一个目录部分,其中包含 httpdocs 所在的目录,并将所有重写规则放在那里。(并重新启动了服务器)。但它没有效果。有没有关于应该如何将带有重写规则的目录部分添加到 .httpd.conf 的提示和故障排除技巧?

  2. 我如何检查 mod-rewrite 是否在此服务器上运行?它在 httpd.conf 文件中启用。服务器处于 fastcgi 模式。

任何其他建议都非常感谢。

谢谢,尼罗

如何将 .htaccess 中的重写规则移至 httpd.conf 中(并使其正常工作)

答案1

Directory / 指令定义系统上所有目录的基本规则。通常在定义 Directory / 指令后,您会得到一个 Directory /my/web/root/here 指令,其中包含更自由的配置设置。

请不要将目录 / 与您的网站的根目录混淆,事实并非如此。

您的重写规则应该应用于目录 /my/web/root/here 指令内,或者特定站点的 VirtualHost 内(如果您使用 VirtualHosts,则很常见)。

将目录 / 中的 AllowOverride 更改为 All 可能会被定义的目录 /my/web/root/here 或特定站点的 VirtualHost 覆盖。

也许如果你可以使用 pastebin (http://www.paste2.org/) 整个 Apache 配置,我们可以更好地了解这个问题。

答案2

Apache 用户应该具有 .htaccess 文件的读取权限。

答案3

谢谢您的回答。我最终发现实际的 httpd.conf 文件位于另一条路径下,由于权限原因无法看到。如果有人需要它,它位于:

/usr/local/dh/apache2/apache2-psnum/etc/(psnum 是服务器编号)

我将重写内容放在我的网站的目录部分下,一切正常。

相关内容