Как написать следующее правило, чтобы настроить для конкретного типа файлов? - PullRequest
0 голосов
/ 31 января 2012

Смотри, правило:

RewriteCond %{REQUEST_FILENAME} !-f

Когда я помещаю это правило в .htaccess, я говорю веб-серверу, что: игнорировать все пути файла в URL.

Например: http://www.foo.com/images/file.jpg

Этот файл игнорируется, изображение будет отображаться только в том случае, если этот URL обрабатывается скриптом (.php) и возвращает содержимое файла.Мне нужно сделать это, но не со всеми файлами:

Например: файлы .JS NOT и другие типы файлов.

Как «перезаписать» это правило, чтобы игнорировать файлы определенного типаили применять только для определенных файлов, таких как:

ТОЛЬКО ПРИНИМАЕТ: JPG, PNG, JPEG, MP3

RewriteCond %{REQUEST_FILENAME}.(jpg|png|jpeg|mp3 ... ) !-f

ИЛИ

НЕ ПРИНИМАЕТ: JS, TXT, CSS

RewriteCond !%{REQUEST_FILENAME}.(js|txt|css| ... ) !-f

Ответы [ 2 ]

1 голос
/ 31 января 2012

IGNORE ALL THE FILE PATHS IN THE URL.

Вы предлагаете проверить наличие запрошенного файла.! -f означает «файл не существует в физическом месте, куда указывает URL запроса».Таким образом, если файл действительно существует в запрошенном месте, ваш php-скрипт не будет выполнен.Непонятно, почему вы хотите добавить какое-то исключение, потому что, если файл существует, он все равно будет запрошен, а если он не существует, ваш сценарий должен сгенерировать страницу с ошибкой 404, иначе это будет страница, сгенерированная сервером,Наверное, не так уж и необычно:)

В дополнение к первому ответу, вероятно, должно быть

RewriteCond %{REQUEST_FILENAME} !\.(jpg|png|jpeg|mp3)$ [NC]

, чтобы избавиться от чувствительности к регистру.

Объединениевместе

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !\.(jpg|png|jpeg|mp3)$ [NC]
# your RewriteRule goes here
0 голосов
/ 31 января 2012

Будет соответствовать, если URL заканчивается одним из перечисленных расширений:

RewriteCond %{REQUEST_FILENAME} \.(jpg|png|jpeg|mp3)$

Будет соответствовать, если URL не заканчивается одним из перечисленных расширений:

RewriteCond %{REQUEST_FILENAME} !\.(jpg|png|jpeg|mp3)$

Условияпо умолчанию связаны "И".Это будет соответствовать, только если A и B соответствуют:

RewriteCond A
RewriteCond B

Это будет соответствовать, если A или B соответствуют:

RewriteCond A [OR]
RewriteCond B

Подробнее: http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond

...