#apache #.htaccess #mod-rewrite #url-rewriting #friendly-url
#апач #.htaccess #мод-переписать #переписывание URL #дружественный url
Вопрос:
Я хочу перенаправить любые запросы к файлам .php на index.php или любые запросы к каталогам или статическому контенту, которые не существуют, также должны направляться в index.php .
Это то, что у меня есть до сих пор. Я просто не уверен, как перенаправлять только файлы .php, а не перенаправлять такие вещи, как изображения, css, js
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
Ответ №1:
Основываясь на показанных вами примерах, не могли бы вы попробовать следующее. Пожалуйста, убедитесь, что вы очистили кэш браузера перед тестированием URL-адресов.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
RewriteCond %{REQUEST_URI} .php [NC]
RewriteRule ^ index.php [QSA,L]
Перезапись / перенаправление JS / CS:
Возможно, вам потребуется использовать базовый тег для исправления вашего js и других относительных ресурсов. Если вы связываете файлы js, используя относительный путь, то файл, очевидно, получит 404, потому что он ищет URL-адрес. например, если URL-адрес /file/ вместо file.html затем ваши относительные ресурсы загружаются из /file/, который является не каталогом, а переписанным HTML-файлом. Чтобы исправить это, сделайте ваши ссылки абсолютными или используйте базовый тег. В заголовке вашей веб-страницы добавьте это <base href="/">
, чтобы ваши относительные ссылки могли загружаться из правильного местоположения.
Комментарии:
1. Это работает. Спасибо за информацию о JS / CS, но мы всегда используем для них абсолютные пути ‘/blah/test.js ‘