Apache跨域404

时间:2012-09-26 04:54:07

标签: apache subdomain http-status-code-404

我想让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会完成此操作,但也会更改我不想要的网页的网址。

1 个答案:

答案 0 :(得分:1)

  

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

因为能够遍历文档根目录是非常非常严重的安全风险。如果您的网络服务器遭到入侵,人们就可以在整个服务器上的任何地方提供各种文件。

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

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

在您的论坛子域中正常。

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

RewriteEngine On
RewriteRule ^Error/(.*)$ http://main.yourdomain.com/Error/$1 [L,P]