在我们的web开发中,经常会为了所谓的SEO对我们的URL进行更加好的展示和SEO的友好化的处理。那么,今天主要是简单的举例说明,如何在nginx下进行简单的url的rewrite。什么是URL的rewrite,中文可以理解为URL的重写。好了,我们来讲解nginx服务器下的URL重写把。 首先需要理解,nginx下的URL的重写即rewrite和Apache下可是不一样的哦。在nginx下,if是非常重要的。非常多的用在我们的nginx下的URL的rewrite中的哦。 Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前,需要编译安装PCRE库。 通过Rewrite规则,可以实现规范的URL、根据变量来做URL转向及选择配置。 我们来简单的说明一下nginx下的if指令的使用例子 if ($http_user_agent ~MSIE){ rewrite ^(.*)$/msie/$1 break; } if (!-f$request_filename){ rewrite ^/img/(.*)$/site/$host/images/$1 last; } 然后我们来简单的说一下关于在nginx下的URL rewrite的一些常用的变量的说明,以及它们代表的含义 变量名: 变量名可以使用"="或"!="运算符 ~ 符号表示区分大小写字母匹配 ~* 符号表示不区分大小写字母匹配 !~ 和 !~ 与~ !~ 相反 -f 和 !-f 用来判断文件是否存在 -d 和 !-d 用来判断目录是否存在 -e 和 !-e 用来判断文件或目录是否存在 -x 和 !-x 用来判断文件是否可以执行 也支持$1到$9位置参数 然后是关于nginx下的URL的rewrite的一些指令的说明,主要包括下面的一些指令 rewrite指令的最后一项参数为flag标记,支持的flag标记主要有以下几种: last :相当于Apache里德(L)标记,表示完成rewrite; break;本条规则匹配完成后,终止匹配,不再匹配后面的规则 redirect:返回302临时重定向,浏览器地址会显示跳转后的URL地址 permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址 last和break用来实现URL重写,浏览器地址栏URL地址不变 本文的最后,我们来举例一些常用的关于nginx下的url rewrite的例子哦 将访问/b跳转到/bbs目录上去: location /b { autoindex on; alias /usr/local/nginx/html/redhat; rewrite ^/b/?$ /bbs permanent; } location /bbs { autoindex on; alias /usr/local/nginx/html/bbs; } 根据不同的浏览器将得到不同的结果。 if ($http_user_agent ~ Firefox) { rewrite ^(.*)$ /firefox/$1 break; } if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /msie/$1 break; } if ($http_user_agent ~ Chrome) { rewrite ^(.*)$ /chrome/$1 break; } 防止盗链 location ~*\.(gif|jpg|png|swf|flv)${ valid_referers none blocked www.it.net.cn*.test.com; if ($invalid_referer) rewrite ^/(.*) http://www.it.net.cn/error.html } 实现域名跳转 server { listen 80; server_name cheng.example.com; write ^(.*)$ http://zhang.example.com/$1 permanent; location / { root html; index index.html index.htm; } 不知道各位朋友们对于上面的例子说明之后,对于所谓的nginx下的URL的rewrite是否有一些了解了呢。更多详细内容,大家可以参考nginx手册吧 (责任编辑:IT) |