都知道使用apache的时候可以使用.htaccess进行为静态的重定向配置。
nginx也可以,单略有不同
首先在
/etc/nginx/nginx.conf文件内
相应的server{} 中加入以下代码,然后我们就可以在nginx.htaccess中编写rewrite规则了。
相应的server{} 中加入以下代码,然后我们就可以在nginx.htaccess中编写rewrite规则了。
include nginx.htaccess;
ngixn rewrite 的相关指令有:if rewrite set return break等。
看个简单的例子:
if (host ~* ^(.*?)\.sgfblog\.com) { set var_host '1'; } if (host ~* ^192\.168\.1\.(.*?)) { setvar_host '1'; } if (host ~* ^localhost) { setvar_host '1'; } if (host ~* ^127\.0\.0\.(.*?)) { set var_host '1'; } if (var_host !~ '1') { rewrite ^/(.*)scheme://www.sgfblog.com/$1 redirect; }
解释一下上述语句的意思:
上面4个if语句都是只有有一个成立就会使用set 把一个变量设置成1
最后1个语句 只要这个变量为1,就执行重定向。
host 指的是主机名,也就是访问网址。
如果主机名不是*.sgfblog.com也不是192.168.1.*也不是localhost也不是127.0.0.*
那么将执行跳转。
rewrite ^/(.*) scheme://www.sgfblog.com/1 redirect;
/(.*)可以匹配根任意字符路径,scheme://www.sgfblog.com/1 则是被重定向到地址scheme 代表协议 可以说http 或 https等
$1 代表匹配时第1处符合的字符串 ,也就是原路径。
redirect代表302重定向,会在url头里改变。
if语句解说
1、变量名不能为空值或者0开头
2、可以使用等于号(=),不等于号(!=)来运算
3、可以使用正则 ~*(不区分大小写) 和 ~(区分大小写)进行匹配
4、!~和 !~*表示不匹配
5、-f 和!-f 表示文件是否存在
6、-d 和 !-d 表示目录是否存在
7、-x 和 !-x表示是否可以执行
支持的flag标签有
标签 | 解释 |
---|---|
last | apache中的[L]表示完成rewrite |
break | 终止匹配 |
permanent | 301 |
redirect | 302 |
retrun用法
语法:
return code
code | 解释 |
---|---|
204 | no content |
400 | bad request |
402 | payment requied |
403 | forbidden |
404 | not found |
405 | methid not allowed |
406 | not acceptable |
408 | request timeout |
410 | gone |
411 | length required |
413 | request entiry too large |
416 | request rang not satisfiable |
500 | internal server error |
501 | not implemented |
502 | bad gateway |
503 | service unavailable |
504 | gateway timeout |
支持的全局变量有
- $args
- $content_length
- $content_type
- $document_root
- $document_uri
- $host
- $http_user_agent
- $http_cookie
- $limit_rate
- $request_nody_file
- $request_mothod
- $remote_addr
- $remote_port
- $remote_user
- $remote_filename
- $request_uri
- $query_string
- $server_protocol
- $server_addr
- $server_name
- $server_port
- $uri
相关链接
- .htaccess在线转nginx rewrite 工具:
http://www.anilcetin.com/convert-apache-htaccess-to-nginx/ -
正则表达式学习:
http://deerchao.net/tutorials/regex/regex.htm