1

古いサイト:
www.example.com (デフォルト)

新しいサイト:
example.com (デフォルト)
および新しい言語の場合..
es.example.com

現在、古いサイト:
www.example.com/this-page.php

新しいサイト (クリーンな URL) で募集中 :
example.com/this-page
es.example.com/esta-pagina

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

RewriteRule ^this-page/?$ this-page\.php?lang=$1
RewriteRule ^esta-pagina/?$ this-page\.php?lang=$1


** $_GET['lang'] は、example.com または es.example.com のどちらがヒットしたかに応じて、内部的に生成されます。

質問: 次の

ようなリダイレクトを追加するにはどうすればよいですか:
Redirect 301 /this-page.php http://example.com/this-page
...それは無限ループを引き起こしませんか?

4

2 に答える 2

2

これに似たリダイレクトを追加するにはどうすればよいですか:
Redirect 301 /this-page.php http://example.com/this-page
...それは無限ループを引き起こしませんか?

URI ではなく、実際のリクエストと照合する必要があります。URI は、書き換えエンジンがルールをループするにつれて変化します。

RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /this-page\.php(\?|\ )
RewriteRule ^ /this-page [L,R=301]
于 2012-11-14T06:09:04.553 に答える
1

また、CloudFlare などの CDN を使用している場合、%{HTTPS} チェックで無限ループ エラーが発生することにも注意してください。CloudFlare ユーザーの場合は、RewriteCond %{HTTPS} !=on を次のように置き換える必要があります。

RewriteCond %{HTTP:X-Forwarded-Proto} =http
于 2014-11-13T23:33:26.087 に答える