【.htaccess】特定ディレクトリ以下へのアクセスを指定のphpファイルに飛ばす方法

このQ&Aのポイント
  • 【.htaccess】を使って特定のディレクトリ以下へのアクセスを指定したphpファイルにリダイレクトする方法を教えてください。
  • サーバー全体的に設定されている「ErrorDocument」ではなく、「RewriteRule」を使用して特定ディレクトリでのError 404を検出したときに、指定したphpファイルに飛ばす方法を教えてください。
  • 【.htaccess】を使用して特定のディレクトリ以下のアクセスを制御し、特定のphpファイルにリダイレクトするベストな方法を教えてください。
回答を見る
  • ベストアンサー

.htaccessで

.htaccessを用いて、ある特定のディレクトリ以下にアクセスされた 場合にだけ、指定したphpファイルへ飛ばすような設定をしたいと 考えています。 サーバー全体的には「ErrorDocument 404 /xxx/xxxxxxx.php」と言う 設定がされてあり、同じように特定のディレクトリでError 404が 検出されたときだけ上記とは違うphpファイルに飛ばしたいのです。 色々試してみて、「RewriteRule」で特定のディレクトリ以下への アクセスを指定したphpファイルへリダイレクトさせるようには 出来ているのですが、「ErrorDocument」で出来れば、そちらの方が 後に良いかもしれないと考えております。 良い方法は、ありませんでしょうか。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4843/10252)
回答No.1

やったことはありませんが、マニュアル http://httpd.apache.org/docs/2.0/mod/core.html#errordocument によると、ErrorDocument は .htaccess でも有効なようですよ。 ていうか聞くよりやってみたほうが早いと思うのですが。

masaho-mk
質問者

お礼

ご回答いただきまして、ありがとうございます。 試行錯誤して、なんとかうまく行くようになりました。

関連するQ&A

  • htaccessで、特定IP以外をリダイレクトさせたい。

    初心者です。 .htaccessを使ってメンテナンス画面を表示させようと思っています。 条件として、 ・特定のファイルへのアクセスを、リダイレクトさせる。 ・動作確認を行うため、自分のIPの場合はリダイレクトさせない。 ファイルに対してのリダイレクトは、 Redirect /aaa/aaa.php /maintenance/maintenance.html 特定IPに対して、ディレクトリ単位のリダイレクトは、 order deny,allow deny from all allow from xxx.xxx.xxx.xxx ErrorDocument 403 /maintenance/maintenance.html というところまでは解決したのですが、 「特定IPに対して、ファイル単位のリダイレクト」 は、どのように指定すればよいのでしょうか?

    • ベストアンサー
    • HTML
  • .htaccessを使いエラーが起きたら飛ばす

    Apacheで.htaccessを使いアクセス制限をしようとしています。 そして403エラーが起きたら指定のファイルにリダイレクトするというのを試みているのですがうまくいきせん。 問題点を絞るべくなるべく簡単にしてみました。 a.phpファイル (http://xxx.yyy.co.jp/ に存在します) <?php print("a"); error_log("a"); ?> b.phpファイル (a.phpと同様にhttp://xxx.yyy.co.jp/ に存在します) <?php print("b"); error_log("b"); ?> .htaccessファイル ErrorDocument 403 http://xxx.yyy.co.jp/b.php deny from all <Files ~ "\.(html|php)$"> allow from all </Files> この.htaccessの意図は拡張子がhtmlとphpのファイルだけにアクセスを許可します。 そしてそれ以外でアクセスしてきて403エラー(forbidden)が出た場合b.phpにリダイレクトしようとしています。(話を簡単にするため他のエラーについては省略します) 問題が出る流れ 1:まずブラウザでhttp://xxx.yyy.co.jp/a.phpにアクセスします。 2:なぜか ErrorDocument 403 に引っかかり http://xxx.yyy.co.jp/b.php に飛んでしまいます。 もちろんこのとき http://xxx.yyy.co.jp/ に a.php はちゃんと存在しています。 よって「ErrorDocument 403 http://xxx.yyy.co.jp/b.php」をまるごと.htaccessから削除してもう一度アクセスしても当然403エラーは出ません。 ちなみに本当にエラーだった場合の処理はうまくいっていて、存在しないファイルで例えば下記のようなURLでアクセスをした場合は正しく http://xxx.yyy.co.jp/b.php に飛びます。 http://xxx.yyy.co.jp/a.ccc 問題は何故エラーでもないのにErrorDocument 403で飛んでしまうのかです。 やはり.htaccessの設定の仕方が悪いのでしょうか。

    • ベストアンサー
    • PHP
  • htaccess で特定IP以外をリダイレクト

    特定IPの以外のアクセスは指定URLへリダイレクトさせたいのですが、うまく行きません。 ↓のように.htaccessに記述しているのですが間違っているんでしょうか? ------------------------------------------- order allow,deny allow from XXX.XXX.XXX.XXX deny from all ErrorDocument 403 http://yahoo.co.jp ------------------------------------------- 「XXX.XXX.XXX.XXX」のIPは自分のIPを記述しているので、yahooにリダイレクトされないのが正しい動作なのですがyahooへリダイレクトされてしまいます。 お詳しい方がおられましたらご回答宜しくお願い致します。

  • .htaccessでリダイレクト

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

  • .htaccessの使い方を教えてください。

    こんばんは、はじめまして。 こちらには初投稿になります。 リンクをクリックした際、普段はAというHPが普通に表示され、特定の場合のみBというHPに リダイレクトさせたいと考えています。 .htaccessを使いたいのですが、色々なサイトを調べても私が行いたい内容のことが書かれて おらず、どうすればいいのかが分かりません。 C.co.jpというホストからアクセスがあった場合のみ http:/d/index.html に転送したいのですが、うまくいきません。 RewriteEngine on RewriteBase / RewriteCond %{REMOTE_ADDR} .C.co.jp RewriteRule .* http:/d/index.html と書いたのですが、どこか問題がありますでしょうか? また、逆にC.co.jp以外からアクセスがあった場合にBのHPにリダイレクトする方法も教えていただけると うれしいです。 ちなみに.htaccessの設置場所はAのHPのindexファイルがあるディレクトリです。 どうか、アドバイスをよろしくお願いいたします。

  • .htaccessでのRewriteRuleが下層ディレクトリに効かない

    現在一番上の階層にドメインを適用しており、そこでwww有りと無しを統一する為、.htaccessに以下のように記述しています。 RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.example\.com)(:80)? RewriteRule ^(.*) http://example.com/$1 [R=301,L] これで、http://www.example.com/ は http://example.com へ、 下層ディレクトリの http://www.example.com/sample/ は http://example.com/sample/ と、 上記のようにリダイレクトしてくれますが、下層ディレクトリの中に掲示板スクリプトを設置しているものがありまして、 そのディレクトリ(/bbs)の中にも、スクリプトのURL書き換えの為のRewriteRuleを記述した.htaccessを設置しています。 ※このディレクトリ(/bbs)のRewriteRuleには、RewriteCond %{HTTP_HOST} は記述していません。 ここで困った事に、http://www.example.com/bbs/ にアクセスすると、そのままwwwが付いたURLがそのままアドレスバーに表示され、 www無し(http://example.com/bbs/)にリダイレクトしてくれません。 .htaccessを設置していない(RewriteRuleを記述していない)下層ディレクトリは、上層ディレクトリに記述しているRewriteRuleの継承をしてくれる為、http://example.com/sample/ のように表示(リダイレクト)されますが、上記の/bbs ディレクトリなどに対しても、上層のRewriteRule を引き継げる方法は無いでしょうか? 色々調べて、RewriteOptions inherit というのも見つけたのですが、/bbs ディレクトリの.htaccessに記述しても、 トップページ(http://example.com/)へリダイレクトされてしまい、どうすれば良いか悩んでおります。 環境は共用レンタルサーバで、 Apacheのバージョンは1.3.39 (Unix)。 httpd.confは自分では設定する事が出来ません。 上層ディレクトリのRewriteRuleを引き継げない場合、/bbs ディレクトリの.htaccessにはどのように記述すれば www無し(http://example.com/bbs/)になるのかでも勿論構いません。 もし良い方法がありましたらご教示頂けますと幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • .htaccess記述、ディレクトリ→特定ファイル

    .htaccessの記述についてお伺いさせてください。 現在、特定のディレクトリにアクセスがあった際に、特定のファイルに転送したいと設定を試しているのですが、上手くいきません…。 ディレクトリからディレクトリでは無く、ファイルからファイルでもありません。 同じドメイン内で、特定のディレクトリ以下の全てのファイルにアクセスがあった場合、特定のファイルに転送したいです。 具体的には、 /hogehoge/ こちら以下にアクセスがあった際、 /mogemoge/hage.html といった具合に、ピンポイントで転送表示を行いたいと考えています。 再度ですが、ドメインは同一内で行い、/hogehoge/ → /mogemoge/hage.html といった具合に指定ファイルに転送を掛けたいです。 .htaccessの記述にお詳しい方いらっしゃいましたら、アドバイスのほどよろしくお願いします。

  • .htaccessの設定について

    .htaccessの設定について以下のように記述しましたが、 404のページに飛んでしまいます。 REQUEST_FILENAMEが見つからないときは、index.phpに飛んでくれる設定ではないのですか? それとも、REQUEST_FILENAMEに直接フルパスをhtt;//xxx.net/という風に指定してくれるものなのでしょうか? よろしくお願いします。 <記述したコード> AddType x-mapp-php5 .php AddHandler x-mapp-php5 .php RewriteEngine on Options +FollowSymlinks RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php [L] ErrorDocument 404 /page-unavailable/ <files ~ "\.tpl$"> order deny,allow allow from none deny from all </files>

  • phpとhtaccessのリダイレクト

    aというフォルダの中のhtmファイルからphpファイルを通して bというフォルダの中のファイルにアクセスさせています。 htmファイルからのリンクはxxx.php?file=../b/xxx.xxxのようにしています。 bのフォルダがサーバ容量を圧迫しているのでbのフォルダを読み込むときだけ別サーバから読み込むよう.htaccessでリダイレクトを Redirect permanent b/ http://xxxxx.com/b/ のようにしました。 直接bのフォルダの中を読み込めばリダイレクトされるのですが、aのフォルダからphpを通してbのフォルダにアクセスするとリダイレクトされません。 どのようにすれば動作させることができるでしょうか?

    • 締切済み
    • PHP
  • htaccessの制御で500エラーが出る

    htaccessで、メンテナンス画面とhtmlファイルのままPHPを実行する記述を 同時に書きたいのですが、そうするとIP除外していない人に500エラーが出ます。 ErrorDocument 503 /maintenance.html <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx RewriteRule ^.*$ - [R=503,L] </IfModule> Action myphp-script /php.cgi AddHandler myphp-script .php .html さくらのレンタルサーバーですので、"AddType application/x-httpd-php .php .html"ではなく 上のように書くとhtmlでPHPを実行できます。 この記述のままアクセスすると、REMOTE_ADDRでIP除外しているものからは 思い通りにそのまま表示されるのですが、それ以外のものからは500エラーが出る状態と なっています。 希望は、特定IPのみhtmlでPHPを実行する通常アクセス。 特定IP以外は、メンテナンス画面という結果にしたいです。 なにか方法はありますでしょうか?