#php #apache #.htaccess
#php #apache #.htaccess
Вопрос:
Я создаю одностраничную точку входа в PHP. Маршруты работают просто отлично, но статические файлы, такие как Js и CSS, возвращают 404. Я не знаю, связано ли это с перенаправлением htaccess.
Вот код файла htaccess:
RewriteEngine on
RewriteCond ${REQUEST_URI} !.(?:css|png|js|jpe?g|gif)$ [NC]
RewriteRule ^([a-zA-Z0-9-_/]*)$ index.php?p=$1
RewriteCond ${REQUEST_FILENAME} !-f
RewriteCond ${REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]
Ответ №1:
Попробуйте без первого RewriteRule:
RewriteEngine on
RewriteCond ${REQUEST_URI} !.(?:css|png|js|jpe?g|gif)$ [NC]
RewriteCond ${REQUEST_FILENAME} !-f
RewriteCond ${REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]
Комментарии:
1. кстати, вижу ваш пост спустя долгое время 🙂
Ответ №2:
При этом проверяется, относится ли запрос к файлу или каталогу, и если нет, он перенаправит его в index.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]
Комментарии:
1. Это сработало, но с небольшими изменениями: RewriteEngine на RewriteCond %{REQUEST_FILENAME} ! -f RewriteCond %{REQUEST_FILENAME} ! -d RewriteRule ^.*$ ./index.php [NC, L, QSA]
Ответ №3:
Вы можете настроить свои правила перезаписи так, чтобы они применялись только к определенным файлам, которые не существуют, а другие вы можете перенаправить на index.php (или любая желаемая страница). Любой другой файл будет отображаться по желанию…
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,NC,L]
Затем вы можете использовать a require()
для запроса любого типа файла, который мог быть запрошен, будь то index.php или someOtherScript.php .