【问题标题】:Apache cross domain 404Apache跨域404
【发布时间】:2012-09-26 04:54:07
【问题描述】:

我想让 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 地址)

【问题讨论】:

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


    【解决方案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。所以在public_html/forum/的htaccess文件中,将这些添加到顶部:

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

    【讨论】:

    • 谢谢! 'Mod proxy' 或 'P flag' 是我需要的。
    猜你喜欢
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    相关资源
    最近更新 更多