mod_rewrite, настройка аватара - PullRequest
2 голосов
/ 14 июля 2009

Я бы хотел использовать mod_rewrite для обработки моих запросов изображений аватаров. У меня есть папка, содержащая все .png изображения, и файл назван в честь имени пользователя учетной записи.

Итак, я бы хотел, чтобы запросы /avatar/Juddling показывали изображение, /images/avatars/Juddling.png НО, если этот файл не существует, я хотел бы, чтобы он показывал default.png изображение.

Options +FollowSymLinks
Options +Indexes
Options -MultiViews
RewriteEngine On

RewriteRule ^avatar/(.*)$ images/avatars/$1.png [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^avatar/(.*)$ images/avatars/default.png [NC,L]

Кажется, что Apache обрабатывает только первый RewriteRule, так как я получаю 404, если аватара нет, вместо того, чтобы видеть изображение по умолчанию.

Ответы [ 4 ]

2 голосов
/ 14 июля 2009

Попробуйте переписать его так, чтобы тест был первым, чтобы:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^avatar/(.*)$ images/avatars/default.png [NC,L]

RewriteRule ^avatar/(.*)$ images/avatars/$1.png [NC,L]
1 голос
/ 14 июля 2009

Попробуйте наоборот:

RewriteCond %{DOCUMENT_ROOT}images/avatars/$1.png -f
RewriteRule ^avatar/([^/]+)$ images/avatars/$1.png [L]
RewriteRule ^avatar/([^/]+)$ images/avatars/default.png [L]
0 голосов
/ 15 июля 2009
Options +FollowSymLinks
Options -MultiViews

RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/images/avatars/$1.png -f
RewriteRule ^avatar/(.*[^/])?$ /images/avatars/$1.png [L]
RewriteRule ^avatar/(.*[^/])?$ /images/avatars/default.png [L]

Этот код работает! Я никогда не имел понятия о регулярных выражениях, но это был "(. * [^ /])?" часть, которая вызывала проблему, я не уверен, что это значит, но проблема решена!

Спасибо за вашу помощь, ребята!

0 голосов
/ 14 июля 2009

%{REQUEST_FILENAME} не обновляется при перезаписи, оставляя исходное значение, поэтому вам нужно немного поумнеть:

RewriteRule ^avatar/(.*)$ images/avatars/$1.png [NC]
RewriteCond %{DOCUMENT_ROOT}/images/avatars/$1.png !-f
RewriteRule ^avatar/(.*)$ images/avatars/default.png [NC,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...