• 締切済み

.htaccessでリダイレクト

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

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

みんなの回答

noname#191236
noname#191236
回答No.2

こんにちは。 以下のように記述すれば出来ると思います。 ErrorDocument 404 http://www.hoge.com/ 無限ループなどにご注意下さい。(参考URL)

参考URL:
http://mikeneko.creator.club.ne.jp/~lab/web/htaccess/redirect.html#redirect4
  • Lunaria
  • ベストアンサー率69% (101/146)
回答No.1

よくレンタルサーバー等の404エラーページでそういうのを見かけませんか? 借りていた方がサイトを引き払ってしまった後などにアクセスすると、エラー画面が出てページが無い旨を表示したあと、しばらくするとサーバーのトップにジャンプします。 なので、そういう形のものは珍しくはないと思いますよ。 実は私も以前からそういうふうにしてあります。 .htaccessで直接リダイレクトさせるのではなく、ページが削除、または移動された旨を記した404エラーページからmetaタグでサイトのトップにジャンプさせているんですが、最近ちょっといろいろ思い直してまして… 閲覧者の意図しない動作を押し付けるのはどうかということで、404エラーからトップにリンクを貼るくらいのほうがいいんじゃないかと検討中です。 ディレクトリまるごと.htaccessでリダイレクトを設定するなら参考URLをどうぞ。

参考URL:
http://www.shtml.jp/htaccess/redirect.html
infinity
質問者

補足

別途404ページを用意するのもいいのですが、 今回はあくまで.htaccessのみでリダイレクト、 ということで検討しています。 試しに「ErrorDocument 404 /」でやってみたのですが、 URLは元のまま、TOPページが表示されてしまうようです。 ファイルが存在するならそのまま表示、 存在しないならTOPページにリダイレクト、 という動作は.htaccessのみで可能でしょうか、 どのように記述すれば良いでしょうか。 という質問内容でお願いします。

関連するQ&A

  • リダイレクトのhtaccessを置くと403エラー

    perlで書いたCGIファイルがあるのですが、スマホ用のリダイレクトhtaccessファイルをトップディレクトリに置いた所、CGIのページが403エラーになってしまいました。 .htaccessファイルを外すと正常に表示するので、原因は.htaccessなのですが、理由が思い当たりません。 CGIのソースは出せないですが、お問い合せフォーム用のCGIです。 何かお気づきの点がありましたら助言お願い致します。 ● .htaccess(トップディレクトリに設置) <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} !/sp/ RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) RewriteRule ^(.*)$ sp/$1 [R] RewriteBase / RewriteCond %{REQUEST_URI} /sp/ RewriteCond %{HTTP_USER_AGENT} !(iPhone|Android.*Mobile|Windows.*Phone) RewriteRule ^sp/(.*)$ $1 [R] RewriteBase / </IfModule> ● ディレクトリ構造 /index.html・・・トップページ /.htaccess・・・上記内容 /contact/all/index.cgi・・・403エラーになるCGI /contact/all/.htaccess・・・「Options ExecCGI」のみ記述 /sp/・・・スマホ用のリダイレクト先ディレクトリ(以下略)

  • .htaccessによる301リダイレクト

    www.hoge.jp/test_hoge/ このディレクトリ以下を www.piyo.com に、リダイレクトしたいです。 下記のように.htaccessを記載したのですが、 RewriteEngine On RewriteRule ^test_hoge(.*)$ http://piyo.com$1 [R=301,L] そのファイルはどこへ格納すればいいのでしょうか。 現在ルートディレクトリは /www/test_hoge/ となっています。 .htaccessを/www/の中にいれても /test_hoge/の中にいれてもエラーがおきてしまいます。 ただ、macのテキストエディットで作成しているからかなと思うのですが、そういうことはありえますか? どなたかご回答お願いします。

    • ベストアンサー
    • CSS
  • .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
  • .htaccessについて

    「ロリポップレンタルサーバー」で.htaccessファイルを設置したのですが、 なぜか「500エラー」が出てしまいます。 何が原因なのか分からないでしょうか? 【問題の.htaccessファイル】 <Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> Options +MultiViews Options -Indexes ErrorDocument 401 http://hoge.com/error/401.htm ErrorDocument 403 http://hoge.com/error/403.htm ErrorDocument 404 http://hoge.com/error/404.htm ErrorDocument 500 http://hoge.com/error/500.htm RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.hoge\.com)(:80)? [NC] RewriteRule ^(.*) http://hoge.com/$1 [R=301,L] DirectoryIndex index.htm Redirect permanent http://hoge.com/sub http://sub.hoge.com/ order deny,allow [EOF] ちなみに「.htaccess Editor」というサイトで作ったものを少しいじりました。

  • htaccessのリダイレクトについて

    html、phpなどの拡張子付きリクエストを、末尾がスラッシュの URLにリダイレクトしたいのですが、方法をご教示ください。 例えば、 http://www.hoge.com/hoge/ へのリクエストを、異なるサーバーの http://www.hoge2.com/hoge/ にリダイレクトしたいと考えており、以下のように記述しています。 #.htaccessの記述 Redirect permanent /hoge/ http://www.hoge2.com/hoge/ しかし、 /hoge/hoge.php のリクエストがあった場合、以下のようにドキュメント名を付加される ので困っています。 http://www.hoge2.com/hoge/hoge.php 宜しくお願いします。

    • ベストアンサー
    • PHP
  • htaccess リダイレクト機能の利用法を教えてください。。

    お世話になっております。 仮のURLで質問させて頂きます。 http://www.pine.co.jp/ma/index.htmlにアクセスがあった場合に、 https://wadax55.wadax.ne.jp/~pine-co-jp/ma/index.html にリダイレクトされるようにしたいのです。 そこでインターネットにありました以下文章を読んだのですが、よくわからないのです・・。お手数ですが教えてくださいますようお願い致します。 .htaccessでは、ディレクトリー構造そのままにリダイレクトさせることも可能です。 Redirect permanent /test/ http://www.shtml.jp/htaccess/ とすれば、http://www.shtml.jp/test/以下にあるファイルへのアクセスがあった場合には、リダイレクトされます。例えば、http://www.shtml.jp/test/basic.htmlへのアクセスは、http://www.shtml.jp/htaccess/basic.htmlへリダイレクトされます。 自分でこうかな?と思うやり方をトライしてみたものの悉く失敗し、めげています…。図々しいのですが、、、つまりどのように.htaccessファイルに記述し、それをどこに設置すればいいのでしょうか・・・?ファイルもだけれどもhtaccessというフォルダが必要なのか??というレベルです。 申し訳ございません。。。 教えて頂けますと大変助かります。

  • .htaccess について

    質問させていただきます。 ロリポップで「.htaccess」までは作れたのですが、「.htaccess」を設置ディレクトリのファイルが作れません。 この言い方でよいのか、不安なのですが…。 具体的に、例えば「.htaccess」設置ディレクトリを「abc/」としました。 すると、アクセス制限をかけたいファイルの名前は「abc/top.html」になるんだと理解しています。 そこで、topページを作ってファイル名を書いて保存するとき、「abc/top.html」と書こうとすると、「上記のファイル名は無効です」とエラーがでます。たしかにファイル名に「/」は使えないな、とわかっているのですが、だったらどうやって「.htaccess設置ディレクトリ」の「abc/」が入ったファイルを作れば良いのでしょうか? 私が書かなくても勝手に「abc/」がつくのかな?と思い、ファイル名を「top.html」だけにしてみても、やっぱり「abc/top.html」にはなっていませんでした…。 どうすればよいのか、さっぱりわかりません。 わかりにくい質問かと思いますが、お答えよろしくお願いいたします。

  • .htaccessの設置場所はここでいいでしょうか?

    初心者です!! .htaccessを利用してwww無しにアクセスしてもwww有りにリダイレクトされる記述を設置しようと思ってます。(topページに転送という意味ではありません全てのページをwww無しを有りにするです) この記述したファイルは一体どこにおいたらいいのでしょうか? publickの下の公開ディレクトリに置けばいいですか?? お馬鹿な質問ですみません。 宜しくお願いいたします。

  • .htaccessのリダイレクトについて

    http://www.mydomain.com/というURLのトップページのみ http://xxx.mydomain.com/へリダイレクトしたいのですが、 http://www.mydomain.com/contents/など、他のディレクトリやファイルまでリダイレクトされてしまって困っています。どなたかお教えください。よろしくお願いします。

    • 締切済み
    • PHP
  • .htaccessのリダイレクトができない

    .htaccessに「Redirect *** ***」という記述をして、 ほかのページにリダイレクトさせようとしています。 しかし、どうしてもうまくいきません。 .htaccessに「DirectoryIndex」などほかの記述をしたところ、 うまく動作しているのでApacheの設定には問題がないと思います。 http://www.shtml.jp/htaccess/redirect.html このページとまったく同じように設定したのですが、 (もちろんパス名は違いますけど) 何かうまく動かない原因は考えられるでしょうか? よろしくお願いいたします。

専門家に質問してみよう