Подтвердить что ты не робот

Rewriterule в htaccess для соответствия определенным расширениям файлов

Как я могу искать экземпляр для определенных расширений файлов, например. (jpg | png | css | js | php), и если нет соответствия, отправьте его в index.php? route = $1.

Я хотел бы иметь возможность указать период для пользовательских имен пользователей.

Итак, перепишите http://example.com/my.name в index.php? route = my.name

Текущая настройка:

.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)$ index.php?route=$1 [QSA,L]
</IfModule>

Что работает:
http://example.com/userpage → index.php? route = userpage
http://example.com/userpage/photos → index.php? route = userpage/photos
http://example.com/file.jshttp://example.com/file.js
http://example.com/css/file.csshttp://example.com/css/file.css

Что мне нужно для работы в дополнение к выше:
http://example.com/my.name → index.php? route = my.name

4b9b3361

Ответ 1

Добавьте дополнительный RewriteCond, чтобы исключить условия, которые вы не хотите переписывать. Используйте ! перед регулярным выражением, чтобы указать, что любое совпадение файлов должно привести к отказу. RewriteCond ниже не проверен, но должен дать вам представление о том, что вам нужно:

RewriteCond %{REQUEST_URI} !\.(jpg|png|css|js|php)$

Ответ 2

Вы пытались изменить логику? Что-то вроде

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule \.(jpg|png|css|js)$ - [L]

Это не будет делать перезаписи для любого файла с расширением .jpg,.png,.css или .js. Затем добавьте свои существующие правила, чтобы нефайловые, некаталогические запросы перенаправлялись на index.php.