3

これはよくある質問/問題であることはわかっていますが、答えを探すのに数時間を費やした結果、あまりにも多くの異なる解決策が見つかりました。それを達成するための「最良の」方法(ベストプラクティス)はどれか知りたいです。

私の htacces ファイルは次のようになります。

RewriteEngine On

# Redirect non-www URLs to www-prefixed ones
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# Redirect HTTPS requests to HTTP ones
RewriteCond %{HTTPS} =on
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R,L]

# Redirect URLs with trailing slashes to ones without it
RewriteRule ^([^/\.]+)/$ http://%{HTTP_HOST}/$1 [R=301,L]

# Rewrite pretty URLs
RewriteRule ^([^/\.]+)$ index.php?page=$1 [L]

ここで、最後の重要なステップが必要です。古い URL を次のようにリダイレクトします。

http://www.domain.com/index.php?page=abchttp://www.domain.com/?page=abc

新しいものに:

http://www.domain.com/abc

{QUERY_STRING}このリダイレクトを確認して、URL を書き換える最後の行の前に配置する必要があることはわかっています。そのようなルールを正しく記述する方法は?

4

1 に答える 1

3

http://www.domain.com/index.php?page=abc and http://www.domain.com/?page=abc新しいものにリダイレクトするには、次の追加ルールを使用します。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(?:index\.php)?\?page=([^\s]+) [NC]
RewriteRule ^ /%1? [R=301,L]
于 2013-02-21T12:18:35.357 に答える