Некоторое время назад я применил небольшое правило переписывания, чтобы перенаправить людей, которые вместо этого напрямую обращаются к изображению моего сайта, на страницы с изображениями,
, например, для доступа к www.mysite.com/i/asdf.jpg вwww.mysite.com/pic/asdf
это правило переписывания, которое я использовал:
location /i/image_(\d+).(gif|jpg|jpeg|png)$ {
root /home/mysite/public_html;
valid_referers www.example.com mysite.com;
if ($invalid_referer) {
rewrite ^ http://www.example.com/pic/$1 permanent;
}
}
Я создал поддомен каталога 'i', который содержит все изображения.так что теперь это похоже на thsi http://i.mysite.com/
Можно ли сделать перезапись, подобную приведенной выше, чтобы, если к файлу напрямую обращался другой реферер, он попадал в то же правило перезаписи?
THX:)
ОБНОВЛЕНИЕ: теперь с помощью этого:
server {
access_log off;
error_log logs/vhost-error_log warn;
listen 80;
server_name i.imgzzz.com;
root /home/imgzzz/public_html;
#location ~ ^/pic/ { alias /home/imgzzz/public_html/i; }
location ~ ^/pic/(.*)$ { alias /home/imgzzz/public_html/i/$1; }
valid_referers i.imgzzz.com www.imgzzz.com imgzzz.com;
location ~ /image_(\d+).(gif|jpg|jpeg|png)$ {
if ($invalid_referer) {
rewrite /image_(\d+).(gif|jpg|jpeg|png)$ /pic/image_$1 last;
}
}
}
Htaccess переписывает:
RewriteBase /
Options +FollowSymlinks
#RewriteEngine on
rewritecond %{http_host} ^imgzzz.com [nc]
rewriterule ^(.*)$ http://www.imgzzz.com/$1 [r=301,nc]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?imgzzz.com/.*$ [NC]
RewriteRule i/image_(\d+)\.(jpg|jpeg|gif) pic/$1 [L]
RewriteRule ^pic/([0-9]+)/{0,1}$ view.php?name=$1 [QSA,L]
RewriteRule ^pic/full/([0-9]+)/{0,1}$ view-f.php?name=$1 [QSA,L]
RewriteRule ^pic/([0-9]+)/feature/$ view.php?name=$1&pop=1 [QSA,L]