Помощь Перевод на SSL с помощью .htaccess без лишних редиректов

01K

Мой дом здесь!
Регистрация
27 Июн 2013
Сообщения
704
Реакции
336
Всем привет!
Как правильно составить правила в .htaccess для перевода страницы на SSL?
После строк, которые находил в нете - админка переставала грузиться.

В админке квлючен Force HTTPS Entire Site. На этом весь перевод на SSL и закончился.
PageSpeed insights ругается:
Код:
Avoid landing page redirects
Your page has 2 redirects. Redirects introduce additional delays before the page can be loaded.
Avoid landing page redirects for the following chain of redirected URLs.
[LIST]
[*]http://stranica.ru/
[*]http://www.stranica.ru/
[*]https://www.stranica.ru/
[/LIST]

.htaccess имеет такие дополнительные правила, относящиеся к редиректу без www на с www:
Код:
##### Redirect index.php to / -- BEGIN
RewriteCond %{THE_REQUEST} !^POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteCond %{SERVER_PORT}>s ^(443>(s)|[0-9]+>s)$
RewriteRule ^index\.php$ http%2://stranica.ru/ [R,L]
##### Redirect index.php to / -- END
##### Redirect non-www to www -- BEGIN
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R,L]
##### Redirect non-www to www -- END

Эксплоиты
##### Rewrite rules to block out some common exploits -- BEGIN
RewriteCond %{QUERY_STRING} proc/self/environ [OR]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
RewriteCond %{QUERY_STRING} base64_(en|de)code\(.*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]
##### Rewrite rules to block out some common exploits -- END
##### File injection protection -- BEGIN
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
RewriteRule .* - [F]
##### File injection protection -- END

Собственно, меня волнует, как правильно избавиться от ненужных редиректов. Как, с точки зрения оптимизации и SEO, лучше это сделать?
 
  • Нравится
Реакции: 01K
я в regex'ах не силён.
Т.е. этот блок:
Код:
RewriteCond %{THE_REQUEST} !^POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteCond %{SERVER_PORT}>s ^(443>(s)|[0-9]+>s)$
RewriteRule ^index\.php$ http%2://stranica.ru/ [R,L]
##### Redirect index.php to / -- END
##### Redirect non-www to www -- BEGIN
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R,L]
##### Redirect non-www to www -- END

заменить на:

Код:
RewriteCond %{HTTP_HOST} ^http://www.site.ru$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
?
 
Да, попробовать убрать все редиректы и оставить это
 
Переменная %{HTTP_HOST} содержит только домен, так что http:// там нет.
Если нужен редирект на домен с www
Код:
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule ^(.*)$ https://www.site.ru/$1 [R=301,L]

Если нужен редирект на домен без www
Код:
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
 
Спасибо ребята!
Кажется всё корректно работает! PageSpeed Insights больше не ругается
 
Делюсь ответом техподдержки хостинга jino.ru
Задал вопрос по тому, как правильно сделать одновременный редирект с http на https, с www на без www, и со сссылок без слеша в конце на ссылки со слешем. Т.е. убираем дубли старниц.

Получен ответ на вашу заявку № ****:
Код:
Здравствуйте.
С www на "без www"
> RewriteEngine On
> RewriteCond %{HTTP_HOST} ^www.domen.ru$ [NC]
> RewriteRule ^(.*)$ http://domen.ru/$1 [R=301,L]
С http на https
> RewriteEngine On
> RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
> RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
>
Со ссылок без слеша в конце на ссылки со слешем в конце.
> RewriteCond %{REQUEST_URI} !/$
> RewriteCond %{REQUEST_URI} !\.
> RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]
 
Последнее редактирование:
  • Нравится
Реакции: 01K
Делюсь ответом техподдержки хостинга jino.ru
Задал вопрос по тому, как правильно сделать одновременный редирект с http на https, с www на без www, и со сссылок без слеша в конце на ссылки со слешем. Т.е. убираем дубли старниц.

А зачем собственно делать редиректы страничек без слеша в конце на странички со слешем.
К примеру в Joomla url построены таким образом - что в конце отсутствует / + домен пишется без слеша в конце.

Не лучше ли будет наоборот делать редирект со страничек со слешем в конце???.
 
Не лучше ли будет наоборот делать редирект со страничек со слешем в конце???.
Да, здесь обычно вебмастера принимают решение исходя из того, какие страницы проиндексировались лучше - со слешем или без (см. яндекс-вебмастер например). На такие и ориентироваться.
 
Да, здесь обычно вебмастера принимают решение исходя из того, какие страницы проиндексировались лучше - со слешем или без (см. яндекс-вебмастер например). На такие и ориентироваться.
Согласен, но безопаснее ставить редиректы на странички без слеша, уже на 1 SEO дырочку меньше будет.)))

Заранее сори за флуд и офтоп.

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

Но увы, инфы адекватной практически нету, один сплошной бред, среди которого методом тыка приходится отбирать рабочие примеры(((.

около 2 недель спрашивал у дяди Google какие переменные можно подставлять в htaccess ))))
около 1 недели спрашивал у google, ну скажи ты мне родненький, где же можно посмотреть список всех правил написания регулярок htaccess.))))
А он ни в какую, один бред мне какой то, не рабочий выдает (((.

Адекватного ответа google мне так и не дал, после чего забил на это гиблое дело покрытое мраком.

От создал бы кто шарящий мануал по htaccess бы ло бы суперски
мануал написать по регулярках у меня получилось
info.za500.biz/programmirovanie/item/regulyarnye-vyrazheniya-manual
а вот htaccess что то не поддается дрессировкам(((.

Вот список реально работающих правил htaccess который удалось собрать
Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование:
Назад
Сверху