Перенаправить всех не www посетителей на www

342
Jason

Я продолжаю получать варианты следующего ответа, и он не работает

RewriteCond % !^www.alwaysroaming.com$ RewriteRule ^(.*)$ http://www.alwaysroaming.com/$1 [R=301,L] 

Причина, по которой это решение бесполезно, заключается в том, что если я

alwaysromaing.com/site

Я никогда не буду перенаправлен на WWW.alwaysroaming.com/site

Кто-нибудь может предоставить правильное переписывание, требуемое здесь?

0
Уже подробно ответили, для перезаписи в обоих направлениях, на ServerFault и StackOverflow [over] (http://serverfault.com/questions/190589/) и [over] (http://serverfault.com/questions/155658/) и [над] (http://serverfault.com/questions/199342/) и [над] (http://serverfault.com/questions/225974/) и [над] (http://stackoverflow.com/questions / 234723 /) и [над] (http://serverfault.com/questions/210709/) и [над] (http://serverfault.com/questions/186271/) и [над] (http: // serverfault .com / questions / 446 /) и [over] (http://serverfault.com/questions/251474/) еще раз. JdeBP 12 лет назад 4
Ух ты, черт возьми, мне пришлось добавить еще один твой комментарий, потому что это удивительно, сколько усилий ты вложил в это, найти их все и связать их вот так. Любить это! Jason 12 лет назад 0

2 ответа на вопрос

2
barryj

Я бы предложил это:

RewriteCond% ! ^ Www.alwaysroaming.com $ [NC] RewriteRule ^ / (. *) $ Http://www.alwaysroaming.com/$1 [R = 301, L] 

Ключевой частью является '/' после '^' во второй строке. NC означает, что он будет работать, если кто-то печатает в смешанном / верхнем регистре.

0
James Polley

Это такой распространенный вопрос, что он является частью документации для mod_rewrite - которую вы прочитали, верно?

Предполагая, что вы работаете на порту 80:

RewriteCond % !^fully\.qualified\.domain\.name [NC] RewriteCond % !^$ RewriteRule ^/(.*) http://fully.qualified.domain.name/$1 [L,R] 

в документации есть еще один пример, если вы не используете порт 80, и рассматриваются другие распространенные сценарии.