Я унаследовал веб-приложение, и в нем есть следующий набор правил .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, вы, вероятно, создадите цикл перенаправления.