エラーページexample.com
を持つexample.com/404.html
ウェブサイトで作業しています。
これが私の.htaccess
ファイル全体です(Apache):
# Forces HTTPS
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
# 404 redirect
ErrorDocument 404 /404.html
# Disables directory indexing (being able to view a list of files instead of the actual webpage)
Options -Indexes
相対404を使用しているため、ユーザーを実際にリダイレクトすることなく(したがってURLを変更することなく)404エラーページのコンテンツを表示します。これは、example.com/nonexistentpage.html
のような上位レベルのページに最適です。
ただし、example.com/parent/nonexistentpage.html
などの子ページの処理方法がわかりません。
現在、既存の404.html
ページを複製し、すべてのURL参照で../
で変更して正しい場所でリソースを検索し、新しい「子」404.html
ページを配置しました子ページがある私の「親」フォルダのそれぞれに。 example.com/parent/404.html
にアクセスすると、エラーページにすべてのスタイルとリンクが正しく表示されます。ただし、example.com/parent/nonexistentpage.html
にアクセスすると、URLは変わりませんが、カスタム404.html
ページの代わりに、スタイルが設定されていない一般的な404エラーメッセージが表示されます。
何かが足りませんか/何か間違っていますか目標は、実際のURLをリダイレクト/変更せずに、存在しない子ページにアクセスするときにエラーページのコンテンツを表示することです。 Options -Indexes
もコメントアウトしましたが、効果はありませんでした。
どんな助け/提案をありがとう。
何もする必要はないはずです。通常、エラーの原因となったURLに関係なく、同じErrorDocument
を提供します。あなたの場合、あなたはあなたのサイトのドキュメントルートで/404.html
を提供しています。
ただし、エラードキュメント内の静的リソースにrelative URLを使用しているように聞こえます。これは機能しません( base
タグを設定しない限り )-しかし、これには警告があります-以下を参照してください参照リンクエラードキュメントはどこからでも提供できるため、browserは相対URLを誤って解決します(少なくとも、意図したとおりではありません)。代わりに、ルート相対URL(/404.html
で行ったようにスラッシュで始まる)または絶対URL(スキーム+ホスト名を含む)を使用する必要があります。
example.com/parent/nonexistentpage.html
にアクセスすると、URLは変更されませんが、一般的なスタイルなしの404エラーメッセージが表示されます
ErrorDocument
ディレクティブが/404.html
を提供するように設定されており、/404.html
で相対パスを使用していると仮定すると、相対URLパスは/parent
"ディレクトリに対して自然に解決されます。 example.com/nonexistentpage.html
を要求した場合にそうするように、ドキュメントルートではありません。
要求されているURLに基づいて相対URLを解決するのはbrowserであることに注意してください。これは、サーバー上のファイルシステムパスとは関係ありません。
base
タグの使用に関する追加の例と説明については、他の関連する質問を参照してください。