Форумы » Программирование »

Помощь по htaccess



1555
TheDark
Привет.

Есть файлик .htaccess
[code]<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

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

RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.
RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ https://example.ru/ [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ https://example.ru/ [R=301,L]
</IfModule>[/code]
Подскажите, как можно поправить редирект со страниц с слэшами в конце, он должен быть один, а сейчас происходит три:
Пример: с https://example.ru/page//// на https://example.ru/page/

Сейчас же судя по https://bertal.ru просиходит так:
1. http://www.example.ru/page///
2. https://www.example.ru/page/
3. https://example.ru/page/

Нужно, чтобы сразу на третий вариант.
Пожалуйста, очень нужно.


Отредактировано TheDark - 24.04.2019
19398
Dimitry
Тут уже что-то намудрено прям, я бы лучше слал все запросы на пхп и там уже обрабатывал в привычном виде...
Ну а вообще просто задаётся много RewriteCond с [OR] и потом уже RewriteRule
Точный синтаксис можно нагуглить.
1555
TheDark
[b]Dimitry[/b], там большой неповоротливый сайт, уже на php все запросы не настроишь.
Блин, во засада.
8497
Trilby
Дима все верно сказал. Не фиг тянуть легаси, потом будет еще тяжелее с ним работать.
Возьми [url=https://github.com/nikic/FastRoute]готовый роутер[/url] и прикрути его к сайту. Это проще, чем кажется, а в итоге сохранит много времени и нервов.
1555
TheDark
Вот чем лайв ко отличается от других форумов. Пока на другой площадке мне кидают рабочее решение, здесь раздают бесплатные советы.
Кстати, вдруг кому понадобится.

[code]<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On

RewriteRule ^([^.]*[^/])$ https://example.ru/$1/ [R=301,L]

RewriteCond %{THE_REQUEST} " /index\.(php|htm)"
RewriteRule ^index\.(php|htm) https://example.ru/ [R=301,L]

RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{THE_REQUEST} ^[^?]+// [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ https://example.ru/$1 [R=301,L]
</IfModule>[/code]
Сайт не мой, по работе пришел таск от одного из сотен клиентов, а тут советы переписать все наново и роутер к условному битриксу прикрутить, офигеть, спасибо.


Отредактировано TheDark - 28.04.2019
19398
Dimitry
Ещё можно было прочитать про RewriteCond и сделать самому.
Ну и на лайв-ко это не гуру форум, а по факту форум поддержки моих проектов.

Неавторизованные и новички не могут отправлять сообщения.

© 2008-2020 vmeste.eu
Контакты | Группа | Privacy и Cookie | Правила