[nginx] Nginx 的 Rewrite 规则实例

来源:互联网 发布:中国人才流失 知乎 编辑:程序博客网 时间:2024/06/10 06:59
  1. 文件或目录不存在时,重定向到某个 PHP 文件上(适用于 mvc 结构)

    if (!-e $request_filename) {    rewrite ^/(.*)$ /index.php last;}
  2. 多目录转成参数
    eg: abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2

    if ($host ~* (.*)\.domian\.com) {    set $sub_name $1;    rewrite ^/sort\/(\d+)\/?$ /index.php?act=sort&name=$sub_name&id=$1 last;}
  3. 目录对换 /123456/xxxx -> /xxxx?id=123456

    rewrite ^/(\d+)/(.+)/ /$2?id=$1 last;
  4. 如果客户端使用 ie 浏览器,则重定向到 /nginx-ie 目录下

    if ($http_user_agent ~MSIE) {    rewirte ^(.*)$ /nginx-ie/$1 break;}
  5. 禁止访问多个目录

    location ~ ^/(cron|templates)/ {    deny all;    break;}
  6. 禁止访问以 /data 开头的文件

    location ~ ^/data {    deny all;}
  7. 设置某些类型文件的浏览器缓存时间

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {    expires 30d;}location ~ .*\.(js|css)?$ {    expires 1h;}
  8. 禁止访问以 .sh .flv .mp4 为文件名后缀的 URL 地址

    location ~ .*\.(sh|flv|mp4)?${ return 403; }
  9. 根据 Referer 信息防盗链代码

    location ~* \.(gif|jpg|png|swf|flv)$ { valid_referers none blocked www.yourdomain.com *.yourdomain.com; if ($invalid_referer) {    rewrite ^/(.*) http://www.yourdomain.com/blocked.html ; }
原创粉丝点击