Помогите укоротить код в htaccess

Обсуждение любых вопросов связанных с файлами конфигурации .htaccess

Помогите укоротить код в htaccess

Сообщение novik2 » Чт окт 18, 2018 6:50 am

Добрый день.
Есть два домена:
1. esano.ru
2. elektrosamokat-shop.ru
Подскажите как лучше сделать редирект с обоих доменов на elektrosamokat-shop.ru, чтобы страницы открывались с окончанием .html без WWW и на протоколе HTTPS.

То что я смог сварганить работает, но выглядит избыточно :( Как-то можно это короче сделать, чтобы непосредственных перенаправлений было меньше.

Сначала на окончание .html:
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]

Потом смена домена:
RewriteCond %{HTTP_HOST} ^esano.ru$ [NC]
RewriteRule ^(.*)$ https://elektrosamokat-shop.ru/$1 [R=301,L]

Потом с www на без www:
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

И в конце на https:
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
novik2
 
Сообщений: 3
Зарегистрирован: Чт окт 18, 2018 6:40 am
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение Emilien » Чт окт 18, 2018 7:45 am

Cмену домена и редирект на без www можно объединить.
Код: выделить все
RewriteCond %{HTTP_HOST} !^elektrosamokat-shop\.ru$ [NC]
RewriteRule ^(.*)$ https://elektrosamokat-shop.ru/$1 [R=301,L]

Используя флаг [OR] можно добавить и проверку %{HTTPS} off.
Код: выделить все
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^elektrosamokat-shop\.ru$ [NC]
RewriteRule ^(.*)$ https://elektrosamokat-shop.ru/$1 [R=301,L]

Правила для .html можно объединить и указать полный адрес с https://elektrosamokat-shop.ru
Код: выделить все
RewriteRule ^((?:.*/)?[^/.]+)/?$ https://elektrosamokat-shop.ru/$1.html [R=301,L]

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^elektrosamokat-shop\.ru$ [NC]
RewriteRule ^(.*)$ https://elektrosamokat-shop.ru/$1 [R=301,L]
Emilien
Мл. Сержант
 
Сообщений: 75
Зарегистрирован: Чт дек 10, 2015 3:35 am
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение novik2 » Чт окт 18, 2018 10:54 am

Большая благодарность, все заработало гораздо лучше, чем у меня.
novik2
 
Сообщений: 3
Зарегистрирован: Чт окт 18, 2018 6:40 am
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение novik2 » Пн окт 29, 2018 6:49 am

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

RewriteEngine On

RewriteRule ^((?:.*/)?[^/.]+)/?$ https://gloria-clinic.ru/$1.html [R=301,L]

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^gloria-clinic\.ru$ [NC]
RewriteRule ^(.*)$ https://gloria-clinic.ru/$1 [R=301,L]
novik2
 
Сообщений: 3
Зарегистрирован: Чт окт 18, 2018 6:40 am
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0

Сообщение Emilien » Пн окт 29, 2018 3:12 pm

Перед проверкой редиректов нужно сбрасывать кеш браузера.
Проверяете на том же сервере где elektrosamokat-shop.ru или на другом?
Если это другой сервер, то там может быть иначе настроено и не работает проверка RewriteCond %{HTTPS} off.
Может быть что-то вроде RewriteCond %{HTTP:X-Forwarded-Proto} !https или ещё как.
Это лучше спросить у техподдержки хостинга или самому посмотреть отличия в $_SERVER для http и https.
Emilien
Мл. Сержант
 
Сообщений: 75
Зарегистрирован: Чт дек 10, 2015 3:35 am
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0


Вернуться в Htaccess

Кто сейчас на форуме

Зарегистрированные пользователи: нет зарегистрированных пользователей

cron