.htaccessで全ページに404エラーを適用する方法

このQ&Aのポイント
  • 下記のWeb構成において、.htaccessを使用して全てのページに404エラーを適用したいです。
  • 自作の404.htmlのエラーページを作成し、.htaccessにエラーページのパスを指定する方法がありますが、CSSや画像の読み込みができなくなってしまう問題があります。
  • 一方、全てのページに同じエラーページを適用する方法として、.htaccessでリダイレクトを指定することができますが、URLが変わってしまうため、「404.html」という表示をさせたくない場合には適用できません。
回答を見る
  • ベストアンサー

.htaccessの設定

ご教授宜しくお願い致します。

 下記web構成です。 トップページに
index.htmlがあり、他ページはabcのフォルダの中にさらにindex.htmlをおいています。
 トップページのアドレスの表示は、
http://www.sample.com/(仮)です。 abcのフォルダのページのアドレスは
http://www.sample.com/abc/ です。

 この状態で、404エラーを全てのページに適応させたいのですが、
自作の404.htmlのエラーページを作成し、.htaccessに下記記述をしました。 
ErrorDocument 404 /404.html

 しかし、これですと、
http://www.sample.com/ にのみしか適応にならず、他のページhttp://www.sample.com/abc/などは、読み込んではいるものの、CSSや画像の読み込みが出来ていない状態です。文字だけの表示となってしまいます。 

また、.htaccessに下記記述をすると ErrorDocument 404 http://www.sample.com/404.html 全てのページに適応になるのですが、 
http://www.sample.com/abc/404.html
といったアドレスになり、「404.html」という表示をさせたくないのです。

 何とか、.htaccessの記述で、全てのページに適応する記述方法はないでしょうか?

 どなたかご教授お願い致します。
宜しくお願い致します。

  • HTML
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> http://www.sample.com/abc/などは、読み込んではいるものの、CSSや画像の読み込みが出来ていない状態です。文字だけの表示となってしまいます。 これは、.htaccessの問題ではなくて 404.html内から呼んでいるcssや画像が、相対リンクになっていて、 サブディレクトリからだと呼べないということではないでしょうか? つまり、404.htmlを修正して、cssや画像を絶対パス呼び出しにすればよいのではないでしょうか?

chibita_sakuan
質問者

お礼

ご回答ありがとうございます! CSSの呼び出しを絶対パスに変更したら無事に表示されました! 本当にありがとうございます!

関連するQ&A

  • .htaccessによりリダイレクトされるサイトの一部だけリダイレクト

    .htaccessによりリダイレクトされるサイトの一部だけリダイレクトされないようにできませんか? ドキュメントルートhome/直下の.htaccessには、下記の記述がされています。 RewriteEngine on RewriteRule .html$ http://www.sample.com/index.php ↑これは、拡張子が.htmlのページを表示しようとしたらwww.sample.com/index.php(TOPページ)へリダイレクトさせるという意味かと思うのですが、 home/webalizer 直下には、自動的に○○○.htmlファイルが生成されるようになっており、 このファイルを開こうとしても、TOPページにリダイレクトされてしまい、 FTP等でダウンロードしてからでないと内容を確認できません。 ルート直下の.htaccess は手を加えたくないので、 home/webalizer直下に、何らかの記述の.htaccessファイルを置くことにより、webalizer内の.htmlファイルだけはリダイレクトせずに開けるようにできないものでしょうか?

    • ベストアンサー
    • PHP
  • カスタマイズした404ページが設定できない

    404ページと.htaccessの格納場所は、 http://www.***1.jp/***2/***3/404.html http://www.***1.jp/***2/***3/.htaccess 1) .htaccessの記述が下記の場合… ErrorDocument 404 /***1/***2/404.html →404.htmlの画像、cssがきちんと表示されない 例えば、存在しないページhttp://www.***1.jp/***2/***3/***4/index.htmlへ飛ぼうとした場合に表示されたhtml内の画像やhrefを見てみると、http://www.***1.jp/***2/***3/***4/404.htmlを読もうとしている 2) .htaccessの記述が下記の場合… ErrorDocument 404 /404.html →カスタマイズした404ページが表示されず、下記文言が追記されている。 Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request. 3) .htaccessの記述が下記の場合… ErrorDocument 404 http://www.***1.jp/***2/***3/404.html 問題なく表示。でも、リダイレクトになってしまい、これはあまり推奨されてないようです。 アドバイスいただけないでしょうか。 よろしくお願いします。

  • .htaccess設定後、リンクが開きません。

    .htaccess設定後、リンクが開きません。 よろしくお願いします。 .htaccess設定後、PC用リンクが開かず、ダウンロードのダイアログが出てしまいます。 そのダイアログ上で「検索」を押すと、 http://shell.windows.com/fileassoc/mimeassoc.asp?mime=application%2Fxhtml+xml このようなエラーサイト?が出てしまいます。 PC用サイトと携帯用サイトを作成し、.htaccessにて振り分けをしています。 .htaccess設置後にこの現象が発生しております。 設置直後には正常に表示されますが、なぜか30分?ほど経つと表示されなくなります。 .htaccessの中身は RewriteEngine On AddType application/xhtml+xml .html RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank) RewriteRule ^$ /i/ [R] と記述しました。これはネットから検索してきたものです。 PCサイトのトップページ http://www.○○.com/index.html 携帯サイトのトップページ http://www.○○.com/i/index.html として作成しております。 http://www.○○.com/ でアクセスするとダウンロードダイアログがでてしまいます。 http://www.○○.com/index.htmlならば正常に表示されます。 また、携帯からではhttp://www.○○.com/i/index.htmlが正しく表示されます。 http://www.○○.com/でアクセスしたときに、 http://www.○○.com/index.htmlを表示できるようにしたいです。 正直、どこを見ればいいのか検討もつきません。 詳しい方がいらっしゃいましたらアドバイスをお願いいたします。

    • ベストアンサー
    • HTML
  • .htaccessは2つ置けないんでしょうか?

    携帯サイトをロリポップにて作成しています。 PCからアクセスした際、ソースを覗かれないようにするため IPアドレスによる制限をしています。 ファイル名.htaccess order deny,allow deny from all #Docomo IPアドレス #Vodafone IPアドレス #au(cdmaOne)とTu-ka IPアドレス #au(WIN) IPアドレス #au(BREW) IPアドレス 上記のファイルにてPCからのアクセスを防ぐ事が出来るのですが、 エラーページの設定も.htaccessにておこなっています。下記 ファイル名.htaccess ErrorDocument 401 http://URL ErrorDocument 403 http://URL ErrorDocument 404 http://URL ErrorDocument 500 http://URL 上記ファイルにてエラーページの設定は完了なのですが .htaccessを2つ置こうとすると、上書きされてしまい 一つだけになってしまいます。 2つの.htaccessを置きたい場合はどのようにしたら良いでしょうか? どなたかご存知の方、ご教授頂けると幸いです。 よろしくお願い致します。

  • .htaccessで403error時に表示するページの設定

    現在、.htaccessで403エラーになったときに表示されるページの設定をしているのですが、 作成した403用のページを表示できず、ブラウザのデフォルト403ページが表示されてしまっています。 .htaccess自体は正常に動作しているのを確認しているため、 ErrorDocumentに関連する記述が誤っていると思うのですが、どこがおかしいのかが分かりません。 どうぞご教授お願いいたします。 なお、403時に表示されるページのアドレスは、(サイトURL)/error/403.html、すでにサーバー上にアップ済です。 下記が現在記述している.htaccessになります。 AddHandler cgi-script htaccess SetEnvIf Accept-Language ko Lilith SetEnvIf Accept-Language en Lilith ErrorDocument 403 /error/403.html Order Allow,Deny Allow from all deny from env=Lilith deny from .ed.jp deny from .ac.jp

  • .htaccessでリダイレクト

    サイトのディレクトリ構造やファイル名を変えたため、 外部からのリンクが切れてしまっています。 .htaccessを設置したディレクトリ以下で ファイルが見つからない場合、TOPページにリダイレクト、 という動作を実現するにはどう記述すれば良いのでしょうか。 TOPページを http://www.hoge.com/ とすると、 とりあえず思いつくのは ErrorDocument 404 / なのですが、404エラーをエラー表示以外の リダイレクトに使うのが正しいのか分かりません。 こういう目的のリダイレクトの書式もあるのでしょうか。 よろしくお願いします。

  • ペナルティなのか、それとも設定の問題なのかわからないので教えてください

    ペナルティなのか、それとも設定の問題なのかわからないので教えてください。 現在、コアサーバーにて複数のサイトを管理しています。 先々月頃からヤフーからペナルティを受けたのか、 サイトエクスプローラーやsite:URLで確認すると、 インデックス数が日に日に減ってきています。 まずsample.com(仮)というドメインのトップページとサブページが削除されました。 そこまでなら、ペナルティを受けたんだと納得できるのですが、 sample.comだけでなく、サブドメインのaaa.sample.com、 bbb.sample.com、ccc.sample.com、ddd.sample.comと、 サブドメインまでインデックスが削除されているみたいで インデックス数が減ってきています。 さらに、別ドメインであるsample2.com、sample3.comも 同じサーバーで管理しているのですが、 サイトエクスプローラーで確認したところ、 それらのサイトにもクローラーが回って来ていません。 サーバーのメインアドレス(public_htmlの直下)をsample.comにしてるので、 サーバーの設定に問題があるのでしょうか? ちなみに、.htaccessの記述は以下です。 php_flag short_open_tag Off AddType application/x-httpd-php htm html ErrorDocument 401 /401.html ErrorDocument 403 /403.html ErrorDocument 404 /404.html ErrorDocument 500 /500.html Options +FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://sample.com/$1 [R=301,L] robots.txtの記述は以下です。 sitemap:http://sample.com/sitemap.xml どなたかお詳しい方がいらっしゃいましたら、ぜひお知恵を貸してください。 宜しくお願いいたします。

    • 締切済み
    • SEO
  • htaccessでリダイレクト

    http://www.○○○/index.php?s=sample というアドレスを http://www.◆◆◆/ にリダイレクトしたいと思っています。 htaccessに下記のように記述しました。 RedirectPermanent /index.php?s=sample http://www.◆◆◆ が、リダイレクトしませんでした。 次に下記のように記述してみました。 RewriteEngine on RewriteRule ^([0-9A-Za-z_]+)/$ index.php?s=$1 [L] RedirectPermanent /sample/ http://www.◆◆◆ すると、 http://www.○○○/index.php?s=sample にアクセスすると、リダイレクトはしますが、 リダイレクト先のアドレスが、 http://www.◆◆◆s=sample となり、引数が残ってしまいます。 原因もわからず、どのようにしたらいいかが全くわかりません。 どなかたお教えください。

    • ベストアンサー
    • PHP
  • htaccessのエラー制御について

    htaccessの中で ErrorDocument 403 を記述しページのアドレスを記入したらエラー番号に対するページを表示できるんですが、htpasswdでBASIC認証させた場合にIDパスワードがエラーの場合の対応するページというのを表示させたいのですができるのでしょうか? よろしくお願いします。

  • .htaccessの記述方法(このファイルを隠す。エラーページ)

    .htaccessファイルで下記のようなことをする記述方法を教えて下さい。 (1)指定ページが見つからない、削除されてしまったっ場合。 参考:http://allabout.co.jp/internet/hpcreate/closeup/CU20031019A/index2.htm ErrorDocument 404 /notfound.html (2).htaccess自体を隠す。 参考:http://htaccess.pasoa.com/itself.htm <Files ~ "^\.ht"> deny from all </Files> ファイルに <Files ~ "^\.ht"> deny from all </Files> ErrorDocument 404 /notfound.html 記述したのですが、エラーが出ました。 また、設置は、.htaccess・notfound.htmlをアスキーモードで、index.htmlと同じ位置にアップロードし、属性を606する。

    • ベストアンサー
    • HTML

専門家に質問してみよう