不久前我做了一点改写规则,将直接访问我网站图像的ppl重定向到图像页面,
例如,访问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’的子域.所以它现在像http://i.mysite.com/一样
是否有可能像上面那样重写,所以如果文件被另一个引用者直接访问,它会达到相同的重写规则?
谢谢 :)
更新:
现在用这个:
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]
解决方法:
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)$/view.PHP?name=image_$1.$2 last; } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。