- ベストアンサー
.htaccessで404エラーページにユーザーが要求したページのアドレスを送る方法
- htaccessを使用して、404エラーページにユーザーが要求したページのアドレスを送る方法について教えてください。
- htaccessファイルを使用して、404エラーページに転送先のページのアドレスを送る方法を知りたいです。
- htaccessで設定した404エラーページにユーザーが要求したページのアドレスを送る方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
http://testb.com/.htaccessに RedirectMatch ^(.*)$ http://testa.com/index.php$1 http://testb.com/blog/ へのアクセスが http://testa.com/index.php/blog/ に転送されるはず。 index.phpの$_SERVER["PATH_INFO"]に/blog/が入るはず。
その他の回答 (2)
404エラーページを使う方法ではありませんが・・・。 存在しないページへのアクセスをhttp://testa.com/index.phpに転送し、 その際にリクエストURIは送れるとおもいます。 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ http://testa.com/index.php?$1 [R=302,L] index.phpの$_SERVER["QUERY_STRING"]で取得できるはずです。
お礼
新サイト運営で、他のことに応用できそうです。ありがとうございました。
補足
返事が遅くなって申し訳ございません。 先ほど試してみたら500 Internal Server Errorがでて、.htaccessファイルが正しくないようです。 なにか、他に策がございましたら教えてください。 よろしくお願いいたします。
- php504
- ベストアンサー率42% (926/2160)
内部リダイレクトなら REDIRECT_URL などの環境変数が使えますが外部リダイレクトだと無理ではないでしょうか ErrorDocument 404 http://example.com/index.php の場合リクエストしたブラウザにリダイレクトのステータスコード(404ではなく301)とリダイレクト先のURL(http://example.com/index.php)が渡されるだけなのでどうしようもない気がします
お礼
内部リダイレクトでも、うまくいきませんでしたが、調べていると、他の事も知れてよかったです。 ありがとうございました。
補足
ありがとうございます。教わったことを参考に以下のようなスクリプトを打ってみました。 .htaccessの中身 ErrorDocument 404 /move.php move.phpの中身 <? //略 $hyoji = '<a href="http://example.com/' . $_SERVER['REDIRECT_URL'] . '">'; echo $hyoji; //略 ?> こうすると、リンク先がhttp://example.com/になってしまい、REDIRECT_URLに入っているはずの内容が表示されません。php側でREDIRECT_URLだけechoやprintで表示させても空欄のままです。REDIRECT_URLを送付するにはhtaccessの中に他に付け加えなければならないことがあるのでしょうか? ちなみに、このファイル群はhttp://example2.com/に設置してある物とし、http://example2.com/testにアクセスした場合の現象とします。 もしくは、PHPがダメなのでしょうか 教えてください よろしくお願いします あと、環境を入力し忘れていたので追記いたします。 Linux Kernel 2.6系 Apache1系(suexec構成) Version 5.2.13 mod_php動作 safe_mode有効 mbstring有効 mbregex有効 mysql有効 mysqli有効(MySQL改良版拡張モジュール) pdo-mysql有効 zlib有効 gd有効 mcrypt有効 exif有効 レンタルサーバーなので使用書きをまるまるコピーしました
お礼
ありがとうございます。うまくいきました。 最終的に RedirectMatch ^(.*)$ http://testa.com$1 と記述した、.htaccessファイルをhttp://testb.com/において、転送通知ページを介さず直接新URLに飛ぶことにしました。 このたびは本当にありがとうございました。