0

次のようなリンクがあります。

www.site.com/page.php?p=1

htaccessで分かりやすいURLに書き換える必要がある

RewriteRule ^home$ page.php?p=1

それは機能しますが、同じコンテンツを持つ 2 つのアクティブなリンクがあります。

古いリンクから新しいリンクに 301 リダイレクトを追加しようとしましたが、ループに陥りました。それを修正する方法はありますか?

4

4 に答える 4

1

ルールがループしないように、実際のリクエストと照合してみてください。

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /page\.php\?p=1(&|\ |^)([^\ ]*)
RewriteRule ^page\.php$ /home?%3 [L,R=301]

# then your internal rewrite
RewriteRule ^home$ page.php?p=1
于 2013-01-23T08:46:56.500 に答える
0

ページのリダイレクトを削除し、htaccess で処理します。

RewriteRule ^page\.php\?p=1$ /home [L,R=301]

これにより、/home にリダイレクトされ、現在のリダイレクト ループが停止します。

于 2013-01-23T14:49:54.427 に答える
0

私が見つけたこれらの状況でのループを防ぐもう 1 つの手っ取り早い方法は、クエリ文字列を追加し、リダイレクトでその存在を確認することです。

RewriteCond %{QUERY_STRING} ^p=1
RewriteCond %{QUERY_STRING} !foo=bar
RewriteRule ^page\.php$ /home [NC,R=301,L]
RewriteRule ^home$ page.php?p=1&foo=bar [NC,L]

このサイトにあります: http://answers.oreilly.com/topic/542-how-to-properly-redirect-for-maximum-seo/

于 2013-02-02T02:24:34.673 に答える