Подтвердить что ты не робот

.htaccess url-rewrite, если файл не существует

Я должен сделать небольшой трюк для сайта! Идея такова:

  • если файл для требуемого url существует, то я перехожу к этому URL-адресу, ничего не делая;
  • Если файл для требуемого URL не существует, я должен перейти к файлу .php и сделать что-то, но НЕ изменять URL!

Пример:

www.mysite.com/page1.htm → существует → перейти к файлу page1.htm

www.mysite.com/page2.htm → НЕ существует → перейдите в файл default.php, но с URL-адресом "www.mysite.com/page2.htm"

Это можно сделать с помощью .htaccess?

4b9b3361

Ответ 1

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /default.php [L]

Ответ 2

Здесь не упоминается, но FallbackResource - новый рекомендуемый способ обработки не найденных (404) URL-адресов. Пример:

FallbackResource /not-404.php 

Из руководства Apache:

Используйте это, чтобы установить обработчик для любого URL-адреса, который не сопоставляется ни с чем в вашей файловой системе, и в противном случае возвращает HTTP 404 (не найден).

Ответ 3

Внедрить правило ошибки 404. Не требуется mod_rewrite:

ErrorDocument 404 /default.php