0

基本的に、example.com/index.php に 301 リダイレクトを要求するすべての人に、example.com/ にリダイレクトしてもらいたいと考えています
。対応する非 www サイト
(www.examle.com/foo -> example.com/foo)
にリダイレクトされる 301 を取得するための URL と、URL に二重 [または三重など] のスラッシュを含むサイトを要求するすべての人は、301
を URL にリダイレクトします。二重スラッシュが削除されています (example.com////foo -> example.com)。

そして、誰かがこれら 3 つのケースのいずれかの組み合わせを行う必要がある場合でも、正しい URL (www.example.com////index.php -> example.com) に 301 リダイレクトされるはずです。

だから私はそれを思いつきます:

RewriteCond %{HTTP_HOST} !^example.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ 
RewriteRule ^index\.php$ / [R=301,N] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC]
RewriteRule ^(.*)$ /$1 [R=301]

しかし、www.example.com//foo -> http://example.com/http:/example.com/foo = 404!

それを機能させる方法は?

4

2 に答える 2

0

これらの行を試してください:

RewriteCond %{HTTP_HOST} !^example.com$
RewriteRule ^(.*)$ http://example.com/$1 [L,QSA,R=301]

RewriteRule ^index.php$ / [L,QSA,R=301]

RewriteRule ^(.*)/{2,}(.*)$ /$1/$2 [L,N,QSA,R=301]
于 2012-08-19T20:49:03.433 に答える
0

ロジックをねじ込みます、真剣に...

私は、 .htaccess の内容をフォローすると、適切な(ほぼ、少し変わった)301リダイレクトが適切な場所に行われることがわかりました...

RewriteBase /
RewriteEngine on

...上部にあり、書き換えルール自体:

RewriteCond %{HTTP_HOST} !^example.com$
RewriteRule ^(.*)$ http://example.com/$1 [L,QSA,R=301]

RewriteRule ^index\.php$ / [QSA,R=301]

これらは私の .htaccess の書き換えルールに過ぎないことを誓います。

奇妙な点は、www.example.com//foo が (301) を example.com/foo にリダイレクトし、次に example.com/foo が (301) を再び example.com/foo にリダイレクトすることです。bot は一度だけ... (ループなし)
www.example.com//foo -> example.com/foo -> example.com/foo

また、www およびその他の条件が満たされた場合、リダイレクトは段階的に発生します:
www.example.com/index.php -> example.com/index.php -> example.com/
www.example.com//index.php - > example.com/index.php -> example.com/

しかし、それは実際には大きな問題ではありません...

于 2012-08-20T08:12:17.753 に答える