.htaccess - как заставить "www". в общем?

Это изменит domain.com на www.domain.com:

# Force the "www."
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

Как заменить часть домена, чтобы это работало в любом домене?

Ответ 1

Я бы использовал это правило:

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

Ответ 2

Это будет сделано:

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

Ответ 3

Если вы хотите перенаправить все не-www-запросы на ваш сайт на www-версию, все, что вам нужно сделать, это добавить следующий код в ваш файл .htaccess:

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

Ответ 4

Это не будет работать с субдоменами.

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]

Ответ 5

Ниже следует префикс 'www' для любого запроса, который его не имеет, и перенаправить отредактированный запрос на новый URI.

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

Ответ 6

RewriteEngine On

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

Это перенаправляет example.com в www.example.com, исключая поддомены.

Ответ 7

это работало как магия для меня

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