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