@Helen2901

Правило htacess корректно работает для одной ссылки,а для другой нет?

Есть вот такое правило htacess которое убирает множественные слеши корректно без лишнего
http который выглядит примерно так
5fd74fdb38df1635732213.png
вот собственно само правило-
RewriteCond %{THE_REQUEST} ^[^?]+//
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]



c ним всё корректно и этого http нет
5fe506ed00264218221446.png

но оно почему то работает корректно для
site.ru//// и kiev.site.ru//////
а если ссылка с какой то страницы ,например
в формате kiev.site.ru/4987/pc/3800000////////
то этот http опять появляется.
5fe506860f4a8682578203.png

Вот если что весь htacess,может дело в каком то еще правиле которое конфликтует
#order deny,allow
#deny from all

RewriteEngine On
   #  Директива включает редиректы !!!!
RewriteBase / 
   # Без директивы "(.*) = /$1" будет /var/wwww/site/web/$1  с директивой  = /$1
Options +FollowSymLinks
   # Разрешает переход по символическим ссылкам.


php_value error_reporting 1

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

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

#RewriteCond %{REQUEST_URI} !^/$
#RewriteCond %{REQUEST_URI} (.*)/$
#RewriteRule . %1 [R=301,L,E=NS:1,QSA]

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


RewriteCond %{THE_REQUEST} ^[^?]+//
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]

   RewriteCond %{REQUEST_URI} \..+$
   # Если файл содержит точку.
RewriteCond %{REQUEST_FILENAME} !-d
   # И это не директория.
RewriteCond %{REQUEST_FILENAME} -f
   # Является файлом.
RewriteCond %{REQUEST_URI} ^(.+)/$
   # И в конце URL есть слеш.
RewriteRule ^(.+)/$ /$1 [R=301,L]
   # Исключить слеш.



# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

Redirect 301 /site/index /

RewriteCond %{REQUEST_URI} !^/generate-webp.php$ 
RewriteCond %{REQUEST_URI} !^/sitemap.php$ 
RewriteCond %{REQUEST_URI} !^/php.php$ 
RewriteCond %{REQUEST_URI} !^/allJS\.php?v2$ 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule ^ %1 [R,L,NC]
  • Вопрос задан
  • 40 просмотров
Решения вопроса 1
@dodo512
Для "/4987/pc/3800000////////" срабатывает правило:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

Тут в /$1 не хватает явного указания https://
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ https://%{HTTP_HOST}/$1 [L,R=301]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы