У меня трудный день для Apache .htaccess методов манипуляций, и кажется, что я врезался в стену. Мой код намеревается перенаправить все запросы на /index.php
просто , кроме для файловых запросов, просто так. Я честно читаю примеры и документацию других людей по каждому относящемуся к делу утверждению и опциям для воспроизведения желаемого поведения.
Пока это код:
RewriteEngine on
# If a requested file exists, rewrite route to the file
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ %{REQUEST_FILENAME} [L]
# If a requested file does not exist, rewrite route to index.php, works even if none was requested
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /index.php [L,QSA]
Пока это работает должным образом, я могу создавать виртуальные пути с помощью моих PHP контроллеров и по-прежнему проверять запросы благодаря QSA
.
Однако неожиданное происходит, когда я решил регистрировать REQUEST_URI
каждый раз /index.php
был вызван, чтобы выяснить, что, пытаясь получить доступ к файлу, который НЕ существует, он регистрирует вызов /index.php
, и на данный момент я не знаю каких-либо методов для применения условия к этому случаю.
У меня вопрос в одном предложении: как я могу реализовать такой RewriteCond
, который проверяет, является ли запрашиваемый файл файлом, а не существует ли он?
Кроме того, так как это мой первый раз ручное управление запросами URI, есть ли какие-либо меры безопасности или убедительные предложения, которые следует учитывать при использовании этих правил в .htaccess ?