Htaccess, как удалить косую черту из файла, но не из каталога

Мой сайт написан с использованием PHP. В моем файле htaccess я использую следующее, чтобы удалить расширение php из моих URL:

 RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]

Пример: www.mysite.com/folder/file.php будет направлен на www.mysite.com/folder/file

Если я перехожу к каталогу без добавления косой черты, сервер автоматически добавляет его:

Пример: www.mysite.com/folder будет направлен на www.mysite.com/folder/

Если я вместо этого перехожу к файлу и добавляю косую черту, я получаю внутреннюю ошибку сервера

Есть ли код, который я могу добавить в свой файл htaccess, где сервер может определить, является ли URL-адрес файла вместо папки? И вместо того, чтобы выдать ошибку, удалить косую черту, чтобы файл был показан?

1

Решение

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

RewriteEngine On

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector