人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPにて[http://example.com/a/index.php]から[http://example.com/b/index.php]にリダイレクトしたいです。 「header(”Location: http://”.$_SERVER[’HTTP_HOST’].dirname($_SERVER[’PHP_SELF’]).”/”.$relative_url);」という方法があるようですが、これでは「a」というフォルダ配下しか指定できません。
また、[http://example.com/b/index.php]の「http://example.com/」部分は、「http://test.com/c/d/」のように変化する可能性があります。 以上の状況で、リダイレクトする方法を教えてください。

●質問者: router
●カテゴリ:ウェブ制作
✍キーワード:http:// PHP 「A」 フォルダ リダイレクト
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● sadcns
●17ポイント

http://www.tagindex.com/html_tag/page/meta_05.html

headerは使用しませんが、HTMLのMETAタグにPHPでジャンプ先を出力するというのはいかがでしょう?CONTENTは0で。

◎質問者からの返答

ご解答ありがとうございます。

どうしてもPHPで処理できない場合は考えてみたいと思います。

また、METAタグのRefresh以外の代替案もあれば教えてください。

補足として、PHPの「header(”Location:」はHTTP/1.1では絶対パスにする必要があるようです。

「header(”Location: 相対パス」という方法は除外してください。


2 ● sadcns
●17ポイント

http://www.shtml.jp/htaccess/redirect.html

.htaccessでリダイレクト機能を利用する方法

2回目です。すみません。

1番目のURL

.htaccessを使用する方法

2番目のURL

URLは変わらなくなってしまうのですが、メインのPHPファイルで、require(),include(),require_once(),include_once()などを使用し、任意のファイルを取り込むというのはいかがでしょうか?

私の知識ではこのぐらいですね。。。

http://jp.php.net/manual/ja/function.require.php

PHP: require - Manual

◎質問者からの返答

ご解答ありがとうございます。


3 ● upride
●17ポイント

>「

http://example.com/

Example Web Page

」部分は、「

http://test.com/c/d/

」のように変化する可能性があります。

この部分に関してはプログラム上の条件でしょうから

プログラム内で何とかするしかないと思います。

つまり header(”Location: http://”.$relative_url);として

$relative_urlにお望みのとび先を設定するしかないと思われます。

「一つ上のディレクトリを指定する」とかなら便利なテクはありますが

ドメインが違うとなると絶対パスしか手がありませんよね。

変化する分だけswitch caseを仕込むと宜しいのでは?

ほかにjavascriptでlocation.href指定する方法もありますが

javascriptをもPHPで吐き出すのでしたら上記方法の方が

見通しがいいかと思います(フレーム指定が無いのでしたら)

◎質問者からの返答

ご解答ありがとうございます。

そしてすいません。質問文が間違っていましたorz

>「http://example.com/」部分は、「http://test.com/c/d/」のように変化する可能性があります。

この部分ですが、伝えたかったことは、「作成したPHPソースを、どのサーバにアップロードしても機能する」ようにしたいという事でした。

つまり「http://example.com/a/index.php」から「http://example.com/a/index.php」に。

http://test.com/c/d/index.php」からは、「http://test.com/c/b/index.php」に、どのサーバの、どのフォルダに設置しても、リダイレクトをさせたいということです。

質問文が間違っていたので申し訳ないです。

>「一つ上のディレクトリを指定する」とかなら便利なテク

多分これが知りたかったことだと思います。


4 ● upride
●17ポイント

>「一つ上のディレクトリを指定する」とかなら便利なテク

・・大げさにテクなんて書きましたがPHPで用意している

関数で十分できます

realpath関数をお使い下さい

相対パスを絶対パスにしてくれますから。

◎質問者からの返答

ご解答ありがとうございます。

realpathは試してみましたが、使用しているサーバの特性なのか、「http://example.com/a/index.php」ではなく「/home/web/html/a」のようなものが返ってきました。

おそらくサーバ上のローカルなパスが返ってきているのではないかと思います。

PHPでは、文字列系の関数を組み合わせて、自分で工夫するしかないのかな・・・

とりあえず寝て、おきてから考えることにします。


5 ● びびすけ
●16ポイント

http://www.net-newbie.com/trans/mod_rewrite.html

Apache module mod_rewrite

apache の rewrite 機能を使います。

http://www.net-newbie.com/trans/mod_rewrite.html

Apache module mod_rewrite

http://japache.infoscience.co.jp/rewriteguide/

Apache URL Rewriting Guide

を参照してください。

.htaccess に書くよりも、httpd.conf に書く方がパフォーマンスが高いです。

http://japache.infoscience.co.jp/rewriteguide/

Apache URL Rewriting Guide

◎質問者からの返答

ご解答ありがとうございます。

httpd.confでも出来るんですね。

ただ、共有タイプのホスティングなので、今回はこの方法を使うことはできなさそうです。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ