mod_rewrite для сопоставления файлов, которые не являются изображениями - PullRequest
0 голосов
/ 24 января 2012

У меня есть следующие правила перезаписи

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^wp-content/uploads/(.*)$ dl-file.php?file=$1 [QSA,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Где каждый запрос к wp-содержимому / загружает его, обрабатывается dl-file.php, чтобы проверить, вошел ли пользователь в систему.

Мне все еще нужно иметь эту функцию, но предоставить свободный доступ к изображениям (png | jpg | gif | jpeg) Я немного потерян, я не знаю, как изменить правило перезаписи, чтобы проверить любой файл, на котором нет изображения.

1 Ответ

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

перед правилом, которое переписывает в dl-file.php, вы можете вставить более конкретные правила для изображений:

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(wp-content/uploads/.*\.png)$ $1 [L]
RewriteRule ^(wp-content/uploads/.*\.jpg)$ $1 [L]
RewriteRule ^(wp-content/uploads/.*\.gif)$ $1 [L]
RewriteRule ^wp-content/uploads/(.*)$ dl-file.php?file=$1 [QSA,L]

Каждое из трех правил имеет одинаковую структуру, я объясню первое:сопоставьте что-либо в загрузках, которые заканчиваются на .png со скобками, вы сохраняете весь путь в переменную $ 1.

, правая часть правила дает эту переменную, поэтому, если вы посмотрите наодин конкретный URL-адрес сводится к следующему:

Rewrite wp-content/uploads/some.png wp-content/uploads/some.png [L]

L в конце говорит механизму перезаписи, что это последнее правило, которое нужно применить.так что если это совпадает, процесс перезаписи заканчивается здесь, ваше png-изображение обслуживается.

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