【问题标题】:Apache ErrorDocument absolute pathApache ErrorDocument 绝对路径
【发布时间】:2011-10-17 14:30:54
【问题描述】:

我正在尝试对域及其所有子域使用相同的 404 ErrorDocument, 子域在 /var/www/ 路径下都有自己的目录

Apache ErrorDocument 指令需要一个相对路径(相对于当前目录),但我希望它 从所有目录/子域转到 /var/www/ErrorPages/404.html

有一个类似的问题here 在 2010 年提出,但它没有详细说明解决方案,我尝试了 Alias,但无法让它做我想做的事。

示例 1: 文件http://example.com/doesnotexist.txt 请求

-> 显示/var/www/mervin/ErrorDocuments/404.html 作为响应

示例 2: 文件http://subdomain.example.com/otherimaginaryfile.txt 请求

-> 显示/var/www/ErrorPages/404.html 作为响应

虚拟主机:

<VirtualHost *:80>
ServerName www.mervinkoops.net
ServerAlias mervinkoops.net *.mervinkoops.net spirecoder.com www.spirecoder.com *.spirecoder.com
DocumentRoot /var/www/mervin
ErrorDocument 404 /ErrorDocuments/404.html
Redirect 404 /favicon.ico
RewriteEngine On
RewriteCond %{HTTP_HOST} public\.mervinkoops\.net [NC]
RewriteRule ^(.*)$ /public/$1 [L]
RewriteCond %{HTTP_HOST} pma\.mervinkoops\.net [NC]
RewriteRule ^(.*)$ /PHPMyAdmin/$1 [L]
RewriteCond %{HTTP_HOST} www\.mervinkoops\.net [NC]
RewriteRule ^(.*)$ /website/$1 [L]
RewriteCond %{HTTP_HOST} mervinkoops\.net [NC]
RewriteRule ^(.*)$ /website/$1 [L]
RewriteCond %{HTTP_HOST} www\.spirecoder\.com [NC]
RewriteRule ^(.*)$ /website/$1 [L]
RewriteCond %{HTTP_HOST} spirecoder\.com [NC]
RewriteRule ^(.*)$ /website/$1 [L]
<Directory /var/www/mervin/>
allow from all
Options -Indexes
RewriteBase /
</Directory>
</VirtualHost>

我该怎么做呢?

其他信息:Apache2.2,MOD_ALIAS 工作,MOD_REWRITE 工作,启用符号链接

【问题讨论】:

    标签: apache http mod-rewrite error-handling mod-alias


    【解决方案1】:

    我在我的一个开发箱上设置了一个测试配置 - 我注意到您的主要缺少的是您的错误文档的目录声明!

    这适用于我的设置:

    <VirtualHost *:80>
    
            ServerName stackexchange.nexus.local
            ServerAlias serverfault.nexus.local
    
            DocumentRoot /Data/vhome/stackexchange.nexus.local/httpdocs
    
            HostnameLookups Off
            UseCanonicalName Off
            ServerSignature On
    
            ErrorLog /var/log/apache2/error_log
            CustomLog /var/log/apache2/access_log combined
    
    
            Alias "/ErrorPages" "/Data/vhome/stackexchange.nexus.local/ErrorPages/"
            ErrorDocument 400 /ErrorPages/bad_request.html
            ErrorDocument 401 /ErrorPages/bad_request.html
            ErrorDocument 403 /ErrorPages/bad_request.html
            ErrorDocument 404 /ErrorPages/bad_request.html
    
    
            <Directory /Data/vhome/stackexchange.nexus.local/httpdocs/>
                    AllowOverride All
                    Options +ExecCGI -Includes
                    Order allow,deny
                    Allow from all
                    RewriteBase /
            </Directory>
    
    
            <Directory /Data/vhome/stackexchange.nexus.local/ErrorPages/>
                    AllowOverride All
                    Options +ExecCGI -Includes
                    Order allow,deny
                    Allow from all
            </Directory>
    
            #RewriteEngine On
            #RewriteCond %{HTTP_HOST} public\.mervinkoops\.net [NC]
            #RewriteRule ^(.*)$ /public/$1 [L]
            #RewriteCond %{HTTP_HOST} pma\.mervinkoops\.net [NC]
            #RewriteRule ^(.*)$ /PHPMyAdmin/$1 [L]
            #RewriteCond %{HTTP_HOST} www\.mervinkoops\.net [NC]
            #RewriteRule ^(.*)$ /website/$1 [L]
            #RewriteCond %{HTTP_HOST} mervinkoops\.net [NC]
            #RewriteRule ^(.*)$ /website/$1 [L]
            #RewriteCond %{HTTP_HOST} www\.spirecoder\.com [NC]
            #RewriteRule ^(.*)$ /website/$1 [L]
            #RewriteCond %{HTTP_HOST} spirecoder\.com [NC]
            #RewriteRule ^(.*)$ /website/$1 [L]
    
    
    </VirtualHost>
    

    让您的 Alias/ErrorDocs 内容适用于您的主域,然后如果别名仍然存在问题,我们可以解决此问题 [尽管我有一种感觉,一旦您添加了目录 - 一切都会到位! ;) ]

    -肖恩

    【讨论】:

    • 您的示例似乎不起作用 apache 日志只是给出了 error_docs 不存在错误。只有一个 Vhost 我需要它,它有 2 个子域直接重写到 /var/www/ 下的目录
    • 我确实希望域/子域位于 1 个 指令中,我已将 定义添加到我的帖子中。
    • 我编辑了我的整个答案,以避免与不起作用的东西混淆。请重新阅读。
    • 我尝试了您的 VHost 建议,我得到了 404(它仍然搜索相对路径 'currentdirectory'/ErrorDocuments/ 而不是 /var/www/mervin/ErrorDocuments/
    • 您如何验证 mod_alias 是否正常工作? - 对我来说,现在很可疑。
    猜你喜欢
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2015-10-20
    • 1970-01-01
    • 2012-01-11
    • 2010-09-15
    • 2013-04-17
    相关资源
    最近更新 更多