Перенаправление www на без-www через htaccess

Рассмотрим как перенаправить www.example.com на example.com через htaccess.

Эта статья относится к разряду быстрых заметок, чтобы можно было не гуглить, в подсмотреть в своих записях.

Есть один стандартный способ:

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

Но здесь мы жестко в htaccess прописываем доменное имя. Но есть ли способ сделать это универсальным способом без жесткого кодирования доменного имени?

Еще один метод без домена:

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

Но если нам нужно сделать это для разделения http и https, то есть такой вариант:

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

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

Если вы хотите сделать это в файле httpd.conf, вы можете сделать это без mod_rewrite, и, очевидно, это лучше для производительности):

<VirtualHost *>
  ServerName www.example.com
  Redirect 301 / http://example.com/
</VirtualHost>

Как правило рабочие варианты могут отличаться от хостинга к хостингу. Здесь уже придется использовать тестирование.

Была ли эта страница полезной?