Эти два переписывают то же самое? - PullRequest
0 голосов
/ 12 ноября 2009

Чем отличаются следующие? Игнорировать доменные имена.

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


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

Разница "^"?

То, что я в основном хочу сделать, это иметь мой сайт как http://yourdomain.com и никогда не показывать www. Для начала он короче и полезен для SEO, так как мой сайт не будет оцениваться как два сайта. Один с www и один без.

Спасибо всем

1 Ответ

1 голос
/ 13 ноября 2009

Нет, они не одинаковы.

Первый говорит, перенаправить на хост example.com, если хост www.example.com.
Второй говорит, перенаправить на www.example.com, если хост не www.example.com.

И даже если вы переписываете второе на следующее (оба правила перенаправляются на example.com:

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

Так что он будет перенаправлен на example.com, если хост не является example.com. Результат может быть таким же, если хост может быть только www.example.com и example.com. Но если он может иметь больше значений, чем это (например, foobar.example.com), ваше первое правило не будет перенаправлять, а мой будет перенаправлять.

...