4

ドメインとそのすべてのサブドメインに同じ 404 ErrorDocument を使用しようとしています。サブドメインはすべて、/var/www/ パスに独自のディレクトリがあります。

Apache ErrorDocument ディレクティブは相対パス (現在のディレクトリからの相対パス) を想定していますが、すべてのディレクトリ/サブドメインから /var/www/ErrorPages/404.html に移動したい

ここで 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 が動作、シンボリック リンクが有効

4

1 に答える 1

8

私は自分の開発ボックスの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をメインドメインで機能させて、それでもエイリアスに問題がある場合は、それに取り組むことができます[ディレクトリを追加すると、すべてが適切に機能するように感じます。;)]

-sean

于 2011-08-01T18:04:41.527 に答える