woonem
@woonem

Что прописать в htaccess, чтоб при запросе папки к пути не добавлялся слэш?

Данные правила вызывают циклическую переадресацию, если запрашивается папка, так как они убирают слэш из пути, а что-то неведомое добавляет его
RewriteBase /
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
  • Вопрос задан
  • 1133 просмотра
Решения вопроса 1
27cm
@27cm
TODO: Написать статус
httpd.apache.org/docs/2.2/mod/mod_dir.html#directo...

Добавьте в начало .htaccess:
DirectorySlash Off
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Starche
Python/JS/PHP Tech Lead
Что-то неведомое не может добавлять. Вы случайно не какой-нибудь фреймворк на основе symfony роутера используете? Symfony, Silex, Lavarel, Lumen? Я с ним тоже намучался с такой же проблемой, с ними необходимо аккуратно прописывать роутинг, чтобы такого не было. Конкретнее не скажу, зависит от способа реализации
Ответ написан
@ShamblerR
############################################################################
####  убирает /  в конце строки если это файл ( содержит точку в урл)   ####
############################################################################
RewriteCond %{REQUEST_URI} \..+$
            #содержит точку (файл)
RewriteCond %{REQUEST_FILENAME} !-d
            #не директория
RewriteCond %{REQUEST_FILENAME} -f
             #является файлом
RewriteCond %{REQUEST_URI} ^(.+)/$
             #в конце урла есть слеш
RewriteRule ^(.+)/$ /$1 [R=301,L]
             #исключить слеш

############################################################################
####  Добавляет  /   если его нет, и это не файл!!!                     ####
############################################################################
RewriteCond %{REQUEST_URI} !(.*)/$
            #слеша в конце нет
RewriteCond %{REQUEST_FILENAME} !-f
            #является файлом
RewriteCond %{REQUEST_URI} !\..+$
            #в урле нет точки (файл)
RewriteRule ^(.*)$ $1/ [L,R=301,QSA]
            #добавляем слеш в конце
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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