URL перезаписи .htaccess, если файл не существует - PullRequest
28 голосов
/ 29 марта 2011

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

  • если файл для требуемого 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?

Ответы [ 3 ]

65 голосов
/ 29 марта 2011
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /default.php [L]
9 голосов
/ 21 июля 2015

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

FallbackResource /not-404.php 

С Руководство по Apache :

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

5 голосов
/ 22 мая 2015

Реализовать правило ошибки 404. Не требует mod_rewrite:

ErrorDocument 404 /default.php
...