Это изменит domain.com
на www.domain.com
:
# Force the "www."
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
Как заменить часть домена, чтобы это работало в любом домене?
Это изменит domain.com
на www.domain.com
:
# Force the "www."
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
Как заменить часть домена, чтобы это работало в любом домене?
Я бы использовал это правило:
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); второй проверяет, не начинается ли значение Host с www.
; третья проверка HTTPS (%{HTTPS}
равна либо on
или off
, поэтому %{HTTPS}s
имеет значение ons
или offs
, а в случае ons
соответствует s
). Заменяющая часть RewriteRule
затем просто объединяет информационные части в полный URL.
EDIT: не работает с URL-адресом, например: https://yourdomain.com/en/usa
Это будет сделано:
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Если вы хотите перенаправить все не-www-запросы на ваш сайт на www-версию, все, что вам нужно сделать, это добавить следующий код в ваш файл .htaccess:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [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$1" [R=301,L]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]
Это перенаправляет example.com
в www.example.com
, исключая поддомены.
это работало как магия для меня
RewriteCond% {HTTP_HOST} ^ sitename.com [NC] RewriteRule ^ (. *) $https://www.sitename.com/ $1 [L, R = 301, NC]