301 Редирект в htaccess с http + www на https без www
301 редирект в создании сайтов и их же продвижении играет самую важную скрипку, ведь при криво настроенном перенаправлении ваш сайт с легкостью вылетит из поиска, раздублируются страницы по самое немогу, а также привнесет раздрай в вашем творении. И чтобы этого не произошло надо настраивать 301 Редирект в htaccess правильно! (с Домена на нужный Домен, со Страницы на правильную Страницу).
А пока немного теории: 301 редирект это по сути простая 301-ая ошибка (301 Permament Redirect), которая возвращается сервером при запросе конкретного адреса вашего сайта, расшифровывается так: "Сайт на постоянной основе перенесен на такой-то адрес". Все пользователи, боты и другие инопланетные обитатели зашедшие на ваш сайт, будут перенаправляться по новому месту прописки, и для поисковых систем Яндекс, Гугл и других (произойдет склейка домена), весь вес сайта будет перенесен на новый адрес.
Однако санкции наложенные на старый сайт перенесены не будут, иначе все конкуренты давно бы наклепали редиректов со своих ГовноСайтов на сайты конкурентов.
Итак: Правильная настройка 301 редиректа в .htaccess
Базовая настройка редиректа с WWW.site.ru на site.ru до появления защищенного протокола выглядела так:
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Обратный редирект с site.ru на WWW.site.ru так:
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.(.*) [NC] RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
Теперь же когда повсеместно стали использоваться Https (SSL) защищенные протоколы. Стали делать переадресацию с с http на https
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Но тут возник вопрос. Как же правильно объединить эти 2 301 редиректа в один, получить компактный код и чтобы не слишком заморачиваться. На просторах интернета я нашел такой вот код и он меня вполне устраивает.
Сразу и перенаправление с www на без + редирект с http на https:
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^www\. RewriteRule (.*) https://site.ru/$1 [L,R=301] Ниже новый вариант который 100% работает (правка от 09.02.2018) RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Примечание!
1) site.ru - нужно заменить на ваш адрес сайта
2) Эти две строчки:
Options +FollowSymLinks RewriteEngine On
Сразу прописаны в файле .htaccess в CMS Joomla 1.5 / 2.5 / 3.x / итд.
Однако если вы их не нашли в этом файле то, чтобы код работал, их необходимо прописать.
Также чтобы не забыть - Простые редиректы!
На другой сайт:
Redirect 301 / http://site.com
Страница на сайт:
Redirect 301 /katalog/tovar1.html http://drugoysite.ru/tovar2.html
Страница на страницу:
Redirect 301 /katalog/tovar-old.html /katalog/tovar-new.html
Я делаю сайты на Joomla 3, но эти редиректы подходят большинству сайтов на php с .htaccess