htaccess: проблема с RewriteCond -f (если файл существует) - PullRequest
0 голосов
/ 11 апреля 2020

У меня трудный день для 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 ?

...