先日こちらの質問を投稿したものです。
https://teratail.com/questions/51981
あの後、.htaccessでErrorDocumentにより、404画面を表示させることができました。皆さまご協力誠にありがとうございました。
今回の質問は本番環境は関係ないので、無理でも全く問題はないのですが、学習のためにできるのかをお聞きしたいです。
以下のような構成で、本番環境では404画面が表示されますが、テスト環境では表示されないという状況が発生しています。
本番環境は次のような構成となっております。
URL http://example.com/ ドキュメントルート /var/www/html/ 404ファイル /var/www/html/errors/404.html .htaccessの場所 /var/www/html/.htaccess
今回の環境は社内専用テストサーバーで、次のような構成となっております。
URL http://example.com/test/ ドキュメントルート /var/www/html/ 404ファイル /var/www/html/test/errors/404.html .htaccessの場所 /var/www/html/test/.htaccess
.htaccessの記述は次のとおりです。本番環境で正しく動作することを確認済です。
ErrorDocument 404 /errors/404.html Options +Includes AddHandler server-parsed html AddType image/svg+xml .svg .svgz AddEncoding gzip .svgz
今回、本番環境では404画面のHTMLファイルが正しく表示されますが、テスト環境では表示されないという状況が発生しています。
原因としては、ドキュメントルートが違うことが原因です。
/errors/ は、 /var/www/html/errors/ を読みに行きますが、テスト環境の当該ディレクトリにファイルはないので、Apache標準のメッセージが表示されます。
そこで、次のようにすることでテスト環境でも本番環境でも404画面を表示することができますが…
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* errors/index.html [L] #ErrorDocument 404 /errors/404.html Options +Includes AddHandler server-parsed html AddType image/svg+xml .svg .svgz AddEncoding gzip .svgz
これは根本解決にはなっていないような気がするんです。
できれば、ErrorDocument 404 /errors/404.html の記述で、ドキュメントルートではなく、
その.htaccessのあるディレクトリをルートと見なして、その下にある errors/404.html を見に行くようなことがしたいです。
このようなことをRewriteEngineを使用せずに実現は可能なのでしょうか?
別に無理でもいいです。社内環境だけの話なので。もし方法があれば教えて頂けますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/24 04:07