rewrite 的语法
语法:rewrite regex replacement flag
默认:none
作用域:server, location, if
This directive changes URI in accordance with the regular expression and the replacement string. Directives are carried out in order of appearance in the configuration file.
这个指令根据表达式来更改URI,或者修改字符串。指令根据配置文件中的顺序来执行。
Be aware that the rewrite regex only matches the relative path instead of the absolute URL. If you want to match the hostname, you should use an if condition, like so:
注意重写表达式只对相对路径有效。如果你想配对主机名,你应该使用if语句。
rewrite只是会改写路径部分的东东,不会改动用户的输入参数,因此这里的if规则里面,你无需关心用户在浏览器里输入的参数,rewrite后会自动添加的,因此,我们只是加上了一个?号和后面我们想要的一个小小的参数 ***https=1就可以了。
nginx的rewrite规则参考:
结合QeePHP的例子
多目录转成参数
abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2
目录对换
/123456/xxxx -> /xxxx?id=123456
例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:
目录自动加“/”
禁止htaccess
禁止多个目录
禁止以/data开头的文件
可以禁止/data/下多级目录下.log.txt等请求;
禁止单个目录
不能禁止.log.txt能请求
禁止单个文件
给favicon.ico和robots.txt设置过期时间;
这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志
设定某个文件的过期时间;这里为600秒,并不记录访问日志
文件反盗链并设置过期时间
这里的return 412 为自定义的http状态码,默认为403,方便找出正确的盗链的请求
“rewrite ^/ http://leech.divmy.com/leech.gif;”显示一张防盗链图片
“access_log off;”不记录访问日志,减轻压力
“expires 3d”所有文件3天的浏览器缓存
只充许固定ip访问网站,并加上密码
将多级目录下的文件转成一个文件,增强seo效果
/job-123-456-789.html 指向/job/123/456/789.html
将根目录下某个文件夹指向2级目录
如/shanghaijob/ 指向 /area/shanghai/
如果你将last改成permanent,那么浏览器地址栏显是/location/shanghai/
上面例子有个问题是访问/shanghai 时将不会匹配
这样/shanghai 也可以访问了,但页面中的相对链接无法使用,
如./list_1.html真实地址是/area/shanghia/list_1.html会变成/list_1.html,导至无法访问。
那我加上自动跳转也是不行咯
(-d $request_filename)它有个条件是必需为真实目录,而我的rewrite不是的,所以没有效果
知道原因后就好办了,让我手动跳转吧
文件和目录不存在的时候重定向:
域名跳转
多域名转向
三级域名跳转
域名镜向
某个子目录作镜向
discuz ucenter home (uchome) rewrite
discuz 7 rewrite
给discuz某版块单独配置域名
discuz ucenter 头像 rewrite 优化
jspace rewrite