0

我想让 apache 始终为所有子域的 404 错误打开一个信号页面。

问题是我的子域位于 public_html 的子文件夹中,因此具有不同的根路径。

例如,主域效果很好:

ErrorDocument 404 /Error/404.html

文件夹和主Error域分别位于 public_html 中。

但是对于论坛子域,位于public_html/forum/上面的根路径中并不存在,它实际上是在寻找public_html/forum/Error/404.html不存在的。

我试图重写论坛文件夹的规则,但也没有成功:

ErrorDocument 404 /../Error/404.html

似乎,由于某种原因,它不能低于根文件夹。

任何想法如何在不触发重定向的情况下从主域和子域中引用同一页面?(例如:http://mysite/Error/404.html将完成此操作,但也会更改我不想要的页面的 url 地址)

4

1 回答 1

1

似乎,由于某种原因,它不能低于根文件夹。

因为能够遍历文档根目录之上是一个非常非常严重的安全风险。如果您的网络服务器受到威胁,人们将能够在您的整个服务器上的任何位置提供各种文件。

如果您有权访问服务器配置,则可以为该/Error文件夹设置别名。例如,在您的论坛子域的虚拟主机配置中,您可以添加:

Alias /Error /path/to/public_html/Error/

这样,当你去的时候,http://forum.yourdomain.com/Error/404.html你实际上是在看http://main.yourdomain.com/Error/404.html. 然后你可以使用:

ErrorDocument 404 /Error/404.html

在您的论坛子域中像往常一样。

但是,如果您无权访问您的服务器/虚拟主机配置,则需要使用 mod_proxy 和 mod_rewrite。因此,在 htaccess 文件中public_html/forum/,将这些添加到顶部:

RewriteEngine On
RewriteRule ^Error/(.*)$ http://main.yourdomain.com/Error/$1 [L,P]
于 2012-09-26T05:34:43.187 回答