php でサイトをダーティ URL からクリーン URL に自動リダイレクトするにはどうすればよいですか。
http://www.mysite.com?page=page1&action=action1
に
http://www.mysite.com/page1/action1
php でサイトをダーティ URL からクリーン URL に自動リダイレクトするにはどうすればよいですか。
http://www.mysite.com?page=page1&action=action1
に
http://www.mysite.com/page1/action1
クリーンリクエストかどうかを確認する必要があります。そうしないと無限ループに陥ります
これは私のプロジェクトの1つの例です:
.htaccess
RewriteEngine On
RewriteRule ^game/([0-9]+)/ /game.php?newid=$1
game.php
if (isset($_GET['id'])) {
$row = dbgetrow("SELECT * FROM games WHERE id = %s",$_GET['id']);
if ($row) {
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: /game/".$row['id']."/".seo_title($row['name']));
} else {
Header( "HTTP/1.1 404 Not found" );
}
exit;
}
if (isset($_GET['newid'])) $_GET['id'] = $_GET['newid'];
したがって、それが直接の「ダーティ」コールなのか、書き換えられたコールなのかを確認する必要があります。
そして、前者の場合にのみリダイレクトします。
きれいな URL を作成するためのコードも必要です。
また、URL が間違っている場合に備えて、リダイレクトの代わりに 404 を表示することも非常に重要です。
Apacheを実行している場合は、mod_rewriteモジュールを使用して、httpdocsフォルダーまたはWebルートの.htaccessファイルにルールを設定できます。下位レベルのコンポーネントの方がはるかに優れている場合に、PHPプロセスを呼び出してリダイレクトを実行する理由はわかりません。
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/page\.php$
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule ^(.*)$ http://mydomain.site/page/%1.pdf [R=302,L]
試す
header("Location: http://www.mysite.com/".$_GET['page']."/".$_GET['action']);
リダイレクトを試みる前に、値が設定されているかどうかを確認する必要があります