.htaccess-как заставить "www.- в общем смысле?
это изменит domain.com
to www.domain.com
:
# Force the "www."
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/ [R=301,L]
как мне заменить часть "домен", чтобы это работало на любой домен?
8 ответов:
Я бы использовал это правило:
RewriteEngine On RewriteCond %{HTTP_HOST} !="" RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTPS}s ^on(s)| RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
первое условие проверяет, является ли Хоста значение не пустое (в случае HTTP / 1.0); второй проверяет, является ли Хоста значение не начинается с
www.
; третий проверяет наличие HTTPS (%{HTTPS}
либоon
илиoff
, так что%{HTTPS}s
либоons
илиoffs
и в случаеons
thes
совпал). Подстановочная частьRewriteRule
затем просто объединяет информационные части в полный URL-адрес.EDIT: не работает с URL, как:https://yourdomain.com/en/usa
Это будет сделать это:
RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/ [R=301,L]
Если вы хотите перенаправить все запросы www на ваш сайт на www-версию, все что вам нужно сделать, это добавить следующий код в ваш .файл htaccess:
RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/ [R=301,L]
Это не будет работать с поддоменами.
domain.com правильно перенаправляется на www.domain.com
но
images.domain.com перенаправляется на www.images.domain.com
вместо того, чтобы проверять, является ли поддомен "не www", проверьте, есть ли две точки:
RewriteCond %{HTTP_HOST} ^(.*)$ [NC] RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC] RewriteCond %{HTTPS}s ^on(s)| RewriteRule ^ HTTP%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
ниже следует префикс ' www ' для любого запроса, который не имеет одного, и перенаправить отредактированный запрос на новый URI.
RewriteCond "%{HTTP_HOST}" "!^www\." [NC] RewriteCond "%{HTTP_HOST}" "(.*)" RewriteRule "(.*)" "http://www.%1" [R=301,L]
RewriteEngine On RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
Это перенаправляет
example.com
towww.example.com
кроме поддоменов.
Это сработало как по волшебству для меня
перезапись % {HTTP_HOST} ^sitename.com [NC] RewriteRule ^(.* ) $ https://www.sitename.com/$1 [L, R=301, NC]
Это старый вопрос, и есть много различных способов сделать это. Самый полный ответ, ИМХО, находится здесь:https://gist.github.com/vielhuber/f2c6bdd1ed9024023fe4 . (Вставка и форматирование кода здесь не работает для меня)