Принудительно заканчивать косую черту, если URL существует - PullRequest
0 голосов
/ 03 марта 2019

Мне нужна помощь для конкретного перенаправления в htaccess .Это не простая « принудительная косая черта ».

Поэтому моя проблема заключается в том, чтобы перенаправить все URL, у которых нет косой черты, в конечную косую черту.Я выполняю это с этим правилом mod_rewrite:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_FILENAME} !\.(gif|jpg|png|jpeg|css|js|xml|php)$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1/ [R=301,L]

, но при этом возникает большая проблема: если я запускаю для URL, который не существует , а нетс косой чертой , Apache запускает ошибку 404, но для URL , который не существует с TRAILING SLASH .Итак, изначально перенаправляется 301 , затем 404. Это, кажется, не имеет смысла.

Как мне это исправить?

1 Ответ

0 голосов
/ 03 марта 2019

Сначала проверьте существование (с [ИЛИ]), а не небытие:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} !\.
RewriteRule !/$ %{REQUEST_URI}/ [NE,R=301,L]
...