Форум русской поддержки Joomla!® CMS
03.12.2016, 08:45:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Как победить двойной слэш site.ru// в htaccess ?

 (Прочитано 816 раз)
0 Пользователей и 1 Гость смотрят эту тему.
GTpro
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 102



« : 26.02.2015, 16:38:53 »

Есть такой дубль: site.ru//

Можно ли убить лишнюю палочку в htaccess ?
Или есть другие способы решения проблемы?
« Последнее редактирование: 26.02.2015, 16:44:01 от GTpro » Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6452



« Ответ #1 : 09.07.2016, 18:09:48 »

апну топик, ибо актуально

Код:
RewriteCond %{REQUEST_URI} ^(.*[^/])/{2,}(.*)$
RewriteRule . %1/%2 [R=301,L]
RewriteCond %{THE_REQUEST} \s/{2,}(.*)\s
RewriteRule .* %1 [R=301,L]
это убирает повторяющиеся слэши в середине URL, но не в конце

как убрать двойной слеш именно в конце URL?
Записан
draff
Практически профи
*******

Репутация: +161/-5
Offline Offline

Пол: Мужской
Сообщений: 2649


step by step


« Ответ #2 : 09.07.2016, 18:35:54 »

Код:
RewriteCond %{THE_REQUEST_URI} /{2,}$
« Последнее редактирование: 13.07.2016, 06:17:43 от draff » Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6452



« Ответ #3 : 09.07.2016, 19:22:06 »

не катит
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1434


« Ответ #4 : 09.07.2016, 19:41:20 »

Слэш нужно оставлять?
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6452



« Ответ #5 : 09.07.2016, 19:54:29 »

нужно оставить только один слеш
впрочем необязательно, далее по коду все равно идет добавление одного слеша в конце при его отсутствии
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1434


« Ответ #6 : 09.07.2016, 20:46:42 »

А главная страница сайта тоже должна быть со слэшем на конце?
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6452



« Ответ #7 : 09.07.2016, 21:01:29 »

да, если слеш добавляется в конец - он везде добавляется, где нет get-параметров
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1434


« Ответ #8 : 09.07.2016, 21:12:06 »

В теории должно сработать, хотя Joomla-вские алиасы, вроде, идут всегда без слэша на конце -- получится лишний редирект при каждом переходе по ссылкам, например, меню, т.е. лишняя нагрузка на сервер:

Код:
RewriteCond %{THE_REQUEST} " /(?|/+|(.+?/)/+) "
RewriteRule .? /%1 [R=303,L]
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6452



« Ответ #9 : 09.07.2016, 21:16:03 »

увы, не помогло (
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1434


« Ответ #10 : 09.07.2016, 21:18:03 »

Проверил у себя на локальном сервере -- работает. Редиректы чистили в кэше?
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6452



« Ответ #11 : 11.07.2016, 21:22:41 »

У меня заработала только такая связка, убираешь что-то одно - перестает работать

Код:
RewriteCond %{REQUEST_URI} ^(.*[^/])/{2,}(.*)$
RewriteRule . %1/%2 [R=301,L]
RewriteCond %{THE_REQUEST} \s/{2,}(.*)\s
RewriteCond %{THE_REQUEST_URI} /{2,}$
RewriteRule .* %1 [R=301,L]
RewriteCond %{THE_REQUEST} " /(?|/+|(.+?/)/+) "
RewriteRule .? /%1 [R=303,L]
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +120/-3
Offline Offline

Пол: Мужской
Сообщений: 1434


« Ответ #12 : 12.07.2016, 01:18:53 »

Цитировать
%{THE_REQUEST_URI}
Согласно руководству пользователя, такой переменной не существует: http://httpd.apache.org/docs/current/mod/mod_rewrite.html, так что эту строку, мне кажется, можно выпилить, как и предшествующую ей, а также само правило:

Цитировать
RewriteCond %{THE_REQUEST} \s/{2,}(.*)\s
RewriteCond %{THE_REQUEST_URI} /{2,}$
RewriteRule .* %1 [R=301,L]

А код 303 после проверки можете изменить на 301 -- просто 301-е редиректы кэшируются, что делает неудобным тестирование.
« Последнее редактирование: 12.07.2016, 01:22:14 от Филипп Сорокин » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet