• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mod_rewrite的なことをphpで実現させたいが空白ページが表示されてしまう)

PHPでmod_rewriteによるURL書き換えがうまくいかない問題

このQ&Aのポイント
  • PHPで書かれたコードで、mod_rewriteによるURL書き換えがうまくいかない問題が発生しています。
  • 特定のURLにアクセスされた際に、別のURLにリダイレクトさせる処理が書かれていますが、URLが書き換わらず、空白のページが表示されてしまいます。
  • 原因は、HTTP_HOSTとREQUEST_URIの取得方法にあり、正規表現のパターンマッチングが誤っている可能性があります。

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

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

そもそも、URL の書き換えがうまくいっていますか? 下のコードのように、書き換えた URL を表示してみて、それがうまくいって いるのなら、リダイレクトするようにしてみれば良いのではないでしょうか。 正しい URL が得られているのにリダイレクトできないのなら、サーバの問題 かもしれません。 ちなみに、私の環境では preg_match_all の結果を代入した配列は、 ・$matches_HTTP_HOST[0][0]: 1 番目にパターン マッチしたパターン全体 ・$matches_HTTP_HOST[1][0]: 1 番目にパターン マッチしたサブ パターン 1 ・$matches_HTTP_HOST[2][0]: 1 番目にパターン マッチしたサブ パターン 2 ・(以下略) となるようです。 daisuke_dm さんが掲載したコードにはいくつか文法ミスがありますが (ダブル クオーテーションが全角、header が hearder になっているなど) そのへんは大丈夫なのでしょうか? 私が掲載したコードは読みやすくするためにタブを全角スペースに置き換えて います。 <html> <?php  if ($_SERVER["REQUEST_METHOD"] == "GET"){   #HTTP_HOST (exclude www.)   preg_match_all("/^(www\.)(.*)$/", $_SERVER["HTTP_HOST"],$matches_HTTP_HOST);   if ($matches_HTTP_HOST[1][0] != ''){    echo $matches_HTTP_HOST[0][0];    echo "<br>";    echo $matches_HTTP_HOST[1][0];    echo "<br>";    echo $matches_HTTP_HOST[2][0];    echo "<br>";   }   # URL の書き換えがうまくいっているのなら、以下のコメントを外して   # リダイレクトする。   #header("HTTP/1.1 301 Moved Permanently");   #header("Location: ".$matches_HTTP_HOST[2][0]);   #header("Connection: close");  } ?> </html>

関連するQ&A