mod_rewrite的なことをphpで実現させたいが空白ページが表示されてしまう
www.example.com/ほげほげ
にアクセスされたら、
example.com/ほげほげ へ urlをかきかえ、
さらに、
$_SERVER["REQUEST_URI"] がスラッシュで終わる(2個以上のスラッシュも考慮)ときは、これらのスラッシュをとりのぞいたurlへかきかえ、
そして、このurlへ301ステータスコードでリダイレクトさせる(ただし、get methodの場合に限る)
というコードをphpで書いたのですが、
なぜか、urlは書き換わらず、空白のページが表示されてしまいます。
どこがいけないのでしょうか?
お助けくださいませ。
if ($_SERVER["REQUEST_METHOD"] == "GET"){
#HTTP_HOST (exclude www.)
preg_match_all("/^(www\.)(.*)$/", $_SERVER["HTTP_HOST"],$matches_HTTP_HOST);
if ($matches_HTTP_HOST[1] != ''){
$bWillBeRedirected = true;
$strAfterRedirect_HTTP_HOST = $matches_HTTP_HOST[2];
}
else{
$strAfterRedirect_HTTP_HOST = $_SERVER["HTTP_HOST"]
}
#REQUEST_URI (,which includes query string)
preg_match_all("/^(\/)(.*)(\/+)$/", $_SERVER["REQUEST_URI"],$matches_REQUEST_URI);
if ($matches_REQUEST_URI[3] != ''){
$bWillBeRedirected = true;
$strAfterRedirect_Request_URI = $matches_REQUEST_URI[1] . $matches_REQUEST_URI[2];
}
else{
$strAfterRedirect_Request_URI = $_SERVER["REQUEST_URI"];
}
#redirect with 301 status code if needed
if($bWillBeRedirected){
#Protocol
if ($_SERVER["HTTPS"] == "on"){
$strProtocol = "https";
}
else{
$strProtocol = "http";
}
$url = $strProtocol . "://" . $strAfterRedirect_HTTP_HOST . $strAfterRedirect_Request_URI;
header("HTTP/1.1 301 Moved Permanently");
hearder(”Location: “.$url);
header(”Connection: close”);
}
}