【发布时间】:2014-09-20 21:18:09
【问题描述】:
不久前我做了一点重写规则,将直接访问我网站图片的用户重定向到图片页面,
例如一个人访问 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]
【问题讨论】:
标签: nginx url-rewriting