Сделайте это:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !(?:\.\w+)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ([^/]+)/?$ $1.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ / [L,R]
Объяснение:
проверяет, имеет ли расширение файла:
RewriteCond %{REQUEST_URI} !(?:\.\w+)$ [NC]
Если нетпроверяет, присутствует ли файл:
RewriteCond %{REQUEST_FILENAME} !-f
Если это не файл, проверяется, присутствует ли эта папка:
RewriteCond %{REQUEST_FILENAME} !-d
Если нет, добавьте .php
.Если /
присутствует в конце, удалите его и добавьте .php
RewriteRule ([^/]+)/?$ $1.php
Проверяет, является ли добавленный .php
или любой другой файл расширения фактически файлом, который присутствует:
RewriteCond %{REQUEST_FILENAME} !-f
проверьте, является ли это каталогом:
RewriteCond %{REQUEST_FILENAME} !-d
Если нет, то это неверный запрос файла и перенаправляет его на /
RewriteRule ^ (. *) $ / [L, R]