переписать в htaccess, чтобы соответствовать определенным расширениям файлов - PullRequest
13 голосов
/ 28 октября 2010

Как я могу найти экземпляр для определенных расширений файлов, например. (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.js -> http://example.com/file.js
http://example.com/css/file.css -> http://example.com/css/file.css

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

Ответы [ 2 ]

22 голосов
/ 28 октября 2010

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

RewriteCond %{REQUEST_URI} !\.(jpg|png|css|js|php)$
5 голосов
/ 28 октября 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...