metrpro

.htaccess на https + без www + со слэшем

Recommended Posts

Требует помощь в составлении редиректа для .htaccess с соблюдением 3х условий:

1. Переадресация на https

2. Переадресация на адрес без www

3. Переадресация на адрес со слэшем в конце

Кто в теме, прошу помочь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все уже обсуждалось по несколько раз

А дальше каждый уже рисует под себя и свой сайт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, metrpro сказал:

Требует помощь в составлении редиректа для .htaccess с соблюдением 3х условий:

1. Переадресация на https

2. Переадресация на адрес без www

3. Переадресация на адрес со слэшем в конце

Кто в теме, прошу помочь

Вот мой вариант:

Options -Indexes
AddDefaultCharset UTF-8

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php [L]
ErrorDocument 404 /404.html
</IfModule>

<Files ~ "\.(tpl)$">
Order allow,deny
Deny from all
</Files>

По умолчанию переадресует на вариант Хоста, который прописан в robots.txt и в Настройки-Общее. Ссылки страниц будут открываться со слэшем, а открывать главную со слэшем вроде как ни к чему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 минут назад, Chernetskiy сказал:

Вот мой вариант:


Options -Indexes
AddDefaultCharset UTF-8

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php [L]
ErrorDocument 404 /404.html
</IfModule>

<Files ~ "\.(tpl)$">
Order allow,deny
Deny from all
</Files>

По умолчанию переадресует на вариант Хоста, который прописан в robots.txt и в Настройки-Общее. Ссылки страниц будут открываться со слэшем, а открывать главную со слэшем вроде как ни к чему.

и у меня такой же:D

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Chernetskiy сказал:

Вот мой вариант:


Options -Indexes
AddDefaultCharset UTF-8

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php [L]
ErrorDocument 404 /404.html
</IfModule>

<Files ~ "\.(tpl)$">
Order allow,deny
Deny from all
</Files>

По умолчанию переадресует на вариант Хоста, который прописан в robots.txt и в Настройки-Общее. Ссылки страниц будут открываться со слэшем, а открывать главную со слэшем вроде как ни к чему.

А www убирает разве этот вариант?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

если по умолчанию в robots.txt параметр Host прописан без www, и в настройках тоже, то ссылка показывается без www. Если специально в строке браузера набирать с www, то откроет с www. 

Вам это собственно для чего надо? Поисковики всё равно склеят ваши варианты к тому домену, что прописан в Host (robots.txt) и в дальнейшем будут рассматривать их как один сайт.

Если уж нужна жесткая переадресация (мало-ли, может с www и без www это разные сайты :) ), то допишите условие, типа так:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?ваш-домен\.ru$
RewriteRule ^(.*)$ https://ваш-домен.ru/$1 [R=301,L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

добавленные 3 и 4 строка вам жестко переадресуют любые варианты на https без www

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Но надо иметь ввиду, что на просторах интернета могут быть ссылающиеся на ваш сайт ссылки с www и без www, для чего надо:

  • Яндексу скормить и подтвердить оба варианта сайта (2 сайта - с https://www... и https:/...) еще до написания вышеуказанного редиректа. Назначить главным https://..., со временем он их склеит:
  • Гуглу надо скормить тоже оба варианта сайта и назначить главный.

После этого, поисковики будут воспринимать варианты ссылок на ваш сайт относящиеся к одному сайту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

<IfModule mod_rewrite.c>

RewriteEngine On

#с www на без www - тут же одним махом заворачиваем гарантированно и на хттпс
RewriteCond %{HTTP_HOST} ^www.metrpro\.ru$ [NC]
RewriteRule ^(.*)$ https://metrpro.ru/$1 [R=301,L]

#с http на https - уже только адреса без ввв
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

#с без слеша на со слешем - финальное условие чисто на концевой слеш
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*).php$
RewriteCond %{REQUEST_URI} !(.*).xml$
RewriteCond %{REQUEST_URI} !(.*).html$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]
</IfModule>

 

9 часов назад, Chernetskiy сказал:

Поисковики всё равно склеят ваши варианты к тому домену, что прописан в Host

склеят или нет, но лучше склеивать самому.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чего-то у меня ни один вариант не работает,, в настройках поставил 1 работать через https, в robots прописал host Host: https://тихорецк-экспресс.рф затем в .htaccess меняю то что там есть на варианты предложенные выше и вуаля пишет что

  2018-08-05_11-36-55.png.226732cfba036fbb283a58947961676e.png

что я упустил? Что где ещё нужно проверить или прописать чтобы заработало? У меня правда домен кириллический в .РФ может из-за этого быть? И какое имя лучше прописывать в настройках? крилическое тихорейк-экспресс.рф или его  IDN xn----itbbjlbymefjdab0ct5j.xn--p1ai

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, MeTaN сказал:

Чего-то у меня ни один вариант не работает,, в настройках поставил 1 работать через https, в robots прописал host Host: https://тихорецк-экспресс.рф затем в .htaccess меняю то что там есть на варианты предложенные выше и вуаля пишет что ...

  

что я упустил? Что где ещё нужно проверить или прописать чтобы заработало? У меня правда домен кириллический в .РФ может из-за этого быть? И какое имя лучше прописывать в настройках? крилическое тихорейк-экспресс.рф или его  IDN xn----itbbjlbymefjdab0ct5j.xn--p1ai

Скорее нужен вариант в Punycode

 

Исходное значение: https://тихорецк-экспресс.рф

После кодирования: https://xn----itbbjlbymefjdab0ct5j.xn--p1ai

Если надо со слешем в конце, то сразу его добавьте к директиве Host: https://xn----itbbjlbymefjdab0ct5j.xn--p1ai/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: Ramiz95
      Добрый день! Дабы не засорять форум несколькими темами, создаю одну с двумя вопросами.
      1. После переезда сайта с nasha-stolica.ru на nasha-stolica.com перестала работать карта google. Я так понял что ключ который был выдан сайту с доменом РУ не подходит к сайту с доменом КОМ. Вопрос: правильно ли я понял? И куда вставить новый ключ? Облазил весь скрипт, но так и не нашел. 
      2. Проблема с переездом сайта с http на https.
      2.1 Делаю все по Инструкции , но там не указано как изменять  "ссылки, имеющиеся в коде сайта" придется скачивать весь сайт и в ручную искать и править? Или можно только шаблон? 
      2.2 Так же там указано "Смотрим, чтобы в карте сайта .xml присутствовал только протокол https" ок, я посмотрел, там действительно указан протокол http. А как это изменить? Где поставить галочку чтоб в sitemap.xml указывался https протокол? 
      Так же там есть несколько непонятных пунктов: 
      1. Переходим в настройки сайта и выбираем Основной домен (если этого не было сделано раньше). - это где?
      2. Переносим все настройки (если такие имелись) с версии сайта http на https - это как? 
      3. Инструмент изменения адресов не используем - что за инструмент?
       
    • Автор: mrbot
      Добрый вечер. Присутствует множество дублей страниц объявлений - дублируются со слешем и без слеша.
      Для избавления от дублей настроил редиректы в .htcaccess, все работает. Но, естественно, в меню и в категориях ссылки остались старые. То есть сейчас на сайте 300 страниц с кодом редиректа 301. Это очень не устраивает.
      Нужно решение - изменить формирование всех ссылок на сайте, сделать так, чтобы все ссылки были, например, на страницы со слешем на конце. Тогда все ссылки будут прямые.
      Обратился к специалисту, мне сообщили что можно поменять в файлах шаблона /template/frontend/realia/main/realia_menu_decorator.php
      Естественно, не очень понимаю, как и что тут прописать чтобы ссылки были одного типа. Если кто сталкивался с такой задачей, в целях избавления от страниц с кодом 301, подскажите решение. 
    • Автор: Vital
      Как поменять пути к картинкам на https:// ?
       
    • Автор: Chernetskiy
      Поводом для статьи послужил привет от Гугла о том, что с 2017 года поисковик начнет отдавать приоритет сайтам, работающим через защищенный протокол https (соответственно имеющий сертификат безопасности), сайты не перешедшие на https будут понижены в поисковой выдаче а посетителю сайта, при его открытии в браузере будет показываться прискорбное сообщение типа:
      ВАШЕ СОЕДИНЕНИЕ НЕ ЗАЩИЩЕНО!
      Злоумышленники могут пытаться похитить ваши данные с сайта
      (например пароли, сообщения или номера банковских карт!)
      Всё это не на пользу сайту как в плане поисковой выдачи, так и в плане доверия посетителей к информации, размещенной на сайте.
      Инструкция по переезду на HTTPS
      Для начала следует купить и установить на хостинг сертификат безопасности, активировать при этом на хостинге протокол SSL (в настройках домена) и подключить сертификат к домену. Самоподписанный сертификат не подойдет, поскольку его безопасность никто не подтвердит. В нашем случае подойдет любой, самый дешевый сертификат безопасности, которые предлагает практически любой хостинг-провайдер в ассортименте. Цена сертификата варьируется от бесплатно на год при регистрации хостинга, например на reg.ru, или при отдельной покупке - от 1350 р. до 2700 р. в год. Установка происходит автоматически или ручками - по этому поводу у каждого хостинг провайдера есть понятный help, да и их поддержка сделает это быстро, по ваше просьбе.
      PS: Можно приобрести сертификат и на стороне, причем дешевле, о чем несколькими постами ниже...
      Далее, пошагово:
      Смиряемся с тем, что на некоторое время сайт просядет в поисковой выдаче, но из двух зол выбираем меньшее. Сомневаюсь, что кому-то срочно понадобится купить апараменты в Новый год.   Для начала никаких редиректов с http не настраиваем. В Админке CMS переходим в Настройки-Общее и в позиции Работать через https (work_on_https) ставим 1 и сохраняем. Открываем файл robots.txt и прописываем директиву host с протоколом https  User-Agent: * Disallow: /admin ... Disallow: /ipotekaorder/ Host: https://you-site.ru Sitemap: https://you-site.ru/sitemap.xml Внимание! директива Host: прописывается сразу под последней строкой, не должно быть между ними пустой строки.
      Далее переходим в Яндекс.Вебмастер с подтвержденными правами на сайт. Если такого нет, то подтверждаем права (следуя инструкции сервиса). Далее переходим в раздел Настройка индексирования – Переезд сайта. И выставляем чекбокс (галочку) напротив «Добавить HTTPS», после этого нажимаем «Сохранить». После этого ждем пока изменения вступят в силу. Как правило, этот срок составляет 2 недели (до Нового года успеваем!). Настраиваем 301 редирект со страниц http на https, при этом избегайте цепочек переадресации. Меняем все ссылки, имеющиеся в коде сайта, на https или делаем их относительными (про картинки тоже не забываем). Смотрим, чтобы в карте сайта .xml присутствовал только протокол https. Добавляем карту в Вебмастер.Яндекса. Добавляем все версии сайта в Google Search Console. Переходим в настройки сайта и выбираем Основной домен (если этого не было сделано раньше). Переносим все настройки (если такие имелись) с версии сайта http на https. Инструмент изменения адресов не используем. Сразу после переноса сайта стараемся обновить все входящие ссылки, в том числе: внешние ссылки, ссылки на профили - например в Google+, Facebook, Twitter, Vk и т.д. И не забываем обновить ссылки карт Гугл и т.п. с протокола http на https (ковыряемся в коде). В результате танцев с бубном, при открытии любой страницы сайта, ссылка страницы в адресной строке браузера должна начинаться с https, а рядом со ссылкой располагаться зеленый замок и надпись Надежный (в Хроме). Если https перечеркнут - ищите недоработки, ваше соединение не защищено, возможно неправильно установлен сертификат (например со старым алгоритмом шифрования SHA-1, надо переустановить с SHA-2 или попросить поддержку сделать это). Если вместо замочка показывается восклицательный знак, значит передается смешанный контент - по протоколам https и http, обычно это старые ссылки, ссылки на переходах с картинок или пунктов меню (если ссылки прямые), загрузка картинок производится с сервера по старому адресу с http и т.п. При клике на восклицательный знак в ссылке обычно сообщается, какая ссылка не безопасна, переходим в админку или в нужные шаблоны и правим их.
       
      Совет: Если что-то не получается, стучимся к Диме  
    • Автор: Chernetskiy
      Судя по последним сообщениям, сайт оптимизирован для работы по протоколу https
       
      После установки последних обновлений, захожу на сайт через https и наблюдаю отсутствие карты на главной, частично другие шрифты, отсутствие формы обратной связи в футере. Шаблон Realia.
       
      Данный вопрос наверное не меня одного интересует, особенно в свете ужесточающихся требований к защищенности информации и клиентах, вот и решил создать отдельную тему. Уважаемые разработчики, проясните для всех, куда надо влезть и что надо прописать чтобы всё было ок.