Jump to content

Recommended Posts

Simpla 2.3.6

Как сделать чтоб главный домен сайта https://site.ru редиректил на https://site.ru/ на сайт со слэшем в конце?

и https://site.ru/* на https://site.ru/

https://site.ru/?  на https://site.ru/
https://site.ru на https://site.ru/
https://www.site.ru yf https://site.ru/

https://site.ru////  на https://site.ru/

# Редирект с www на без www
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]

# Редирект с http на https
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

# Добавление слеша в конце URL, если его нет
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]

# Редирект с //// на /
RewriteCond %{THE_REQUEST} //
RewriteRule .* /$0 [R=301,L]

Редиректы www и https работают, но без слеша в конце, главная не добавляет слэш, а вот внутренние страницы все ок.

Также если добавляю редирект со знака * или ? на без него, то TO MANY REDIRECTS

# Редирект для URL с любыми дополнительными путями
RewriteCond %{REQUEST_URI} ^/.*$
RewriteRule ^ https://site.ru/ [L,R=301]

# Редирект для URL с вопросительным знаком
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^$ https://site.ru/ [L,R=301]

Проблема именно в редиректах на главной странице.

https://site.ru/?  на https://site.ru/
На все внутренние страницы каталога без проблем слэш работает, кроме главной и с ? *

Edited by megauser
Link to post
Share on other sites
  • 1 month later...

Попробуй такой подход:


# Включаем модуль mod_rewrite
RewriteEngine On

# Редирект с www на без www и с http на https
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [OR]
RewriteCond %{HTTPS} off
RewriteRule ^ https://site.ru%{REQUEST_URI} [R=301,L,NE]

# Удаление множественных слешей
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]

# Добавление слеша в конце URL, если это не файл и нет параметров
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*[^/])$ /$1/ [R=301,L]

# Нормализация запросов с ? или без параметров
RewriteCond %{THE_REQUEST} \s/+\?*\s
RewriteRule ^ /? [R=301,L]

# Нормализация URL без параметров (удаление знака ?)
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^$ / [R=301,L]


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...