微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

需要帮助重写子域的Nginx规则

不久前我做了一点改写规则,将直接访问我网站图像的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 举报,一经查实,本站将立刻删除。

相关推荐