На моем веб-сайте у меня есть следующий код, чтобы исключить расширение php-страниц.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Правило перезаписи ^([^\.]+)$ $1.php [NC,L]
Я также добавил этот код для отображения пользовательских страниц 404.
ОшибкаДокумент 404/404
Оба они работают независимо, но не при совместном использовании.Когда я перехожу по фиктивной ссылке, например www.mydomain.com/pagethatdontexist, я хочу увидеть свою страницу 404, вместо этого я вижу ошибку «Файл не найден», которая, я думаю, исходит от сервера, поэтому я, по-видимому, получаю 404 на 404.
я пытался двигаться ErrorDocument
выше и ниже код удаления расширения, попробовал /404.php
также. Я также попытался создать исключение для 404, например
RewriteCond %{REQUEST_URI} !^/404.php$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Правило перезаписи ^([^\.]+)$ $1.php [NC,L]
Ничего не работает.
Изменить: когда код расширения удаляется, и я посещаю www.mydomain.com/pagethatdontexist Я вижу свою страницу 404. Но если я посещаю www.mydomain.com/pagethatdontexist.php Я вижу мягкую ошибку «Файл не найден» с сервера. Возможно, это может дать ключ к пониманию того, что происходит.