Назад | Перейти на главную страницу

Не уверен, что делает этот набор правил .htaccess

Я унаследовал веб-приложение, и в нем есть следующий набор правил .htaccess. Мне кажется, что они ничего не делают. Может кто-нибудь объяснить, что они делают?

Мне кажется, что они сопоставляют только обращения к корню сайта, проверяют, не существует ли каталог (!), А затем 301 перенаправляют в корень сайта.

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

Удаляет косую черту в конце любого URL-адреса.

например.:

https://example.com/welcome/

становится:

https://example.com/welcome

Второй RewriteCond указывает, что правило соответствует только тогда, когда URL-адрес не соответствует существующему каталогу на диске (например, это может быть файл), конечно, автоматически.

Просто чтобы добавить к ответу OverCoder ... как уже говорилось, этот код удаляет косую черту в конце URL-адреса (кроме каталогов) ...

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

Однако первые RewriteCond директива здесь действительно лишняя и может быть удалена. Это просто проверяет, заканчивается ли URL-адрес косой чертой, что означает RewriteRule шаблон (т.е. ^(.+)/$) уже установлено.

И второй RewriteCond директива гарантирует, что мы не запрашиваем каталог. Каталог требует косая черта в конце. По умолчанию mod_dir будет добавить косая черта в конце, если вы запрашиваете каталог без. Итак, если вы затем удалите завершающую косую черту в каталогах с помощью mod_rewrite, вы, вероятно, создадите цикл перенаправления.