Contents
- 1 nginx重定向规则详细介绍
- 1.1 rewrite命令
- 1.2 nginx重定向的IF条件判断
- 1.3 正则表达式
- 1.4 文件和目录判断
- 1.5 return 返回代码
- 1.6 301重定向方法
- 1.7 nginx rewrite伪静态配置参数详细说明
- 1.8 正则表达式匹配
- 1.9 文件及目录匹配
- 1.10 flag标记
- 1.11 一些可用的全局变量有,可以用做条件判断
- 1.12 多目录转成参数
- 1.13 目录对换
- 1.14 目录自动加“/”
- 1.15 禁止htaccess
- 1.16 禁止多个目录
- 1.17 禁止以/data开头的文件
- 1.18 禁止单个目录不能禁止.log.txt能请求
- 1.19 禁止单个文件
- 1.20 给favicon.ico和robots.txt设置过期时间
- 1.21 设定某个文件的过期时间;这里为600秒,并不记录访问日志
- 1.22 文件反盗链并设置过期时间
- 1.23 只允许固定ip访问网站,并加上密码
- 1.24 将多级目录下的文件转成一个文件,增强seo效果
- 1.25 将根目录下某个文件夹指向2级目录
- 1.26 域名跳转
- 1.27 多域名转向
- 1.28 三级域名跳转
- 1.29 域名镜像
- 1.30 某个子目录作镜向
- 1.31 给discuz某版块单独配置域名
- 1.32 discuz ucenter 头像 rewrite 优化
- 1.33 选择跳转目录到域名
在网站建设中需要网页重定向的情况很多:如网页目录结构变动、网页重命名、网页的扩展名改变、网站域名改变等。如果不做重定向,用户的收藏和搜索引擎数据库中的旧地址只能让访客得到一个404错误信息页面降低了用户体验度,导致访问流量白白丧失。不仅如此,之前该页面的一切积累(比如PR值)就都白费了。
WebServer的301重定向不仅能使页面实现自动跳转,对于搜索引擎来说,也可以传递PR值。
案例一:将多个域名指向同一web目录
1 2 3 |
<span class="pln"> server_name www</span><span class="pun">.</span><span class="pln">168seo.cn</span><span class="pln"> 168seo.cn</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/$ /</span><span class="pln"> redirect</span><span class="pun">;</span> |
案例二:将不带www的域名301转向到带www的域名
1 2 3 4 5 6 7 |
<span class="pln"> server_name www.168seo.cn 168seo.cn;</span><span class="pln"> </span><span class="kwd">if</span> <span class="pun">(</span><span class="pln"> $host </span><span class="pun">!=</span> <span class="str">"www.168seo.cn"</span> <span class="pun">)</span> <span class="pun">{</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/(.*)$ http:/</span><span class="pun">/</span><span class="pln">www</span><span class="pun">.</span><span class="pln">markdream</span><span class="pun">.</span><span class="pln">com</span><span class="pun">/</span><span class="pln">$1 permanent</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span> |
nginx重定向规则详细介绍
rewrite命令
nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location 和IF条件判断块中,命令格式如下:
1 2 3 4 5 6 7 8 9 10 11 |
<span class="pln"> rewrite </span><span class="pun">正则表达式</span> <span class="pun">替换目标</span><span class="pln"> flag</span><span class="pun">标记</span><span class="pln"> flag</span><span class="pun">标记可以用以下几种格式:</span><span class="pln"> </span><span class="kwd">last</span> <span class="pun">–</span> <span class="pun">基本上都用这个</span><span class="typ">Flag</span><span class="pun">。</span><span class="pln"> </span><span class="kwd">break</span> <span class="pun">–</span> <span class="pun">中止</span><span class="typ">Rewirte</span><span class="pun">,不在继续匹配</span><span class="pln"> redirect </span><span class="pun">–</span> <span class="pun">返回临时重定向的</span><span class="pln">HTTP</span><span class="pun">状态</span><span class="lit">302</span><span class="pln"> permanent </span><span class="pun">–</span> <span class="pun">返回永久重定向的</span><span class="pln">HTTP</span><span class="pun">状态</span><span class="lit">301</span> |
例如下面这段设定nginx将某个目录下面的文件重定向到另一个目录,$2对应第二个括号(.*)中对应的字符串:
1 2 3 4 5 |
<span class="pln"> location </span><span class="pun">/</span><span class="pln">download</span><span class="pun">/</span> <span class="pun">{</span><span class="pln"> rewrite </span><span class="pun">^(</span><span class="str">/download/</span><span class="pun">.*)/</span><span class="pln">m</span><span class="pun">/(.*)</span><span class="pln">\.</span><span class="pun">.*</span><span class="pln">$ $1</span><span class="pun">/</span><span class="pln">nginx</span><span class="pun">-</span><span class="pln">rewrite</span><span class="pun">/</span><span class="pln">$2</span><span class="pun">.</span><span class="pln">gz </span><span class="kwd">break</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span> |
nginx重定向的IF条件判断
在server和location两种情况下可以使用nginx的IF条件判断,条件可以为以下几种:
正则表达式
1 2 3 4 5 |
<span class="pun">匹配判断</span> <span class="pun">~</span> <span class="pun">为区分大小写匹配;</span> <span class="pun">!~为区分大小写不匹配</span><span class="pln"> </span><span class="pun">~*</span> <span class="pun">为不区分大小写匹配;!~为不区分大小写不匹配</span> |
例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:
1 2 3 4 5 |
<span class="kwd">if</span> <span class="pun">(</span><span class="pln">$http_user_agent </span><span class="pun">~</span><span class="pln"> MSIE</span><span class="pun">)</span> <span class="pun">{</span><span class="pln"> rewrite </span><span class="pun">^(.*)</span><span class="pln">$ </span><span class="pun">/</span><span class="pln">nginx</span><span class="pun">-</span><span class="pln">ie</span><span class="pun">/</span><span class="pln">$1 </span><span class="kwd">break</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span> |
文件和目录判断
1 2 3 4 5 6 7 |
<span class="pun">-</span><span class="pln">f</span><span class="pun">和!-</span><span class="pln">f</span><span class="pun">判断是否存在文件</span><span class="pln"> </span><span class="pun">-</span><span class="pln">d</span><span class="pun">和!-</span><span class="pln">d</span><span class="pun">判断是否存在目录</span><span class="pln"> </span><span class="pun">-</span><span class="pln">e</span><span class="pun">和!-</span><span class="pln">e</span><span class="pun">判断是否存在文件或目录</span><span class="pln"> </span><span class="pun">-</span><span class="pln">x</span><span class="pun">和!-</span><span class="pln">x</span><span class="pun">判断文件是否可执行</span> |
例如下面设定nginx在文件和目录不存在的时候重定向:
1 2 3 4 5 |
<span class="kwd">if</span> <span class="pun">(!-</span><span class="pln">e $request_filename</span><span class="pun">)</span> <span class="pun">{</span><span class="pln"> proxy_pass http</span><span class="pun">:</span><span class="com">//127.0.0.1/;</span><span class="pln"> </span><span class="pun">}</span> |
return 返回代码
返回http代码,例如设置nginx防盗链:
1 2 3 4 5 6 7 8 9 10 |
<span class="pln"> location </span><span class="pun">~*</span><span class="pln"> \.</span><span class="pun">(</span><span class="pln">gif</span><span class="pun">|</span><span class="pln">jpg</span><span class="pun">|</span><span class="pln">png</span><span class="pun">|</span><span class="pln">swf</span><span class="pun">|</span><span class="pln">flv</span><span class="pun">)</span><span class="pln">$ </span><span class="pun">{</span><span class="pln"> valid_referers none blocked http</span><span class="pun">:</span><span class="com">//www.168seo.cn/ http://www.markdream.cc/;</span><span class="pln"> </span><span class="kwd">if</span> <span class="pun">(</span><span class="pln">$invalid_referer</span><span class="pun">)</span> <span class="pun">{</span><span class="pln"> </span><span class="kwd">return</span> <span class="lit">404</span><span class="pun">;</span> <span class="pun">}</span><span class="pln"> </span><span class="pun">}</span> |
301重定向方法
进行了301重定向,把www.168seo.cn和php100.com合并,并把之前的域名也一并合并. 有两种实现方法,第一种方法是判断nginx核心变量host(老版本是http_host):
1 2 3 4 5 6 |
<span class="pun"> </span><span class="pln">server </span><span class="pun">{</span><span class="pln"> server_name markdream</span><span class="pun">.</span><span class="pln">com</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/(.*) http:/</span><span class="pun">/</span><span class="pln">www</span><span class="pun">.</span><span class="pln">markdream</span><span class="pun">.</span><span class="pln">com</span><span class="pun">/</span><span class="pln">$1 permanent</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span> |
nginx rewrite伪静态配置参数详细说明
正则表达式匹配
1 2 3 |
<span class="pun">*</span> <span class="pun">~</span> <span class="pun">为区分大小写匹配</span> <span class="pun">*</span> <span class="pun">~*</span> <span class="pun">为不区分大小写匹配</span> <span class="pun">*</span> <span class="pun">!~和!~*分别为区分大小写不匹配及不区分大小写不匹配</span> |
文件及目录匹配
1 2 3 4 |
<span class="pun">*</span> <span class="pun">-</span><span class="pln">f</span><span class="pun">和!-</span><span class="pln">f</span><span class="pun">用来判断是否存在文件</span> <span class="pun">*</span> <span class="pun">-</span><span class="pln">d</span><span class="pun">和!-</span><span class="pln">d</span><span class="pun">用来判断是否存在目录</span> <span class="pun">*</span> <span class="pun">-</span><span class="pln">e</span><span class="pun">和!-</span><span class="pln">e</span><span class="pun">用来判断是否存在文件或目录</span> <span class="pun">*</span> <span class="pun">-</span><span class="pln">x</span><span class="pun">和!-</span><span class="pln">x</span><span class="pun">用来判断文件是否可执行</span> |
flag标记
1 2 3 4 |
<span class="pun">*</span> <span class="kwd">last</span> <span class="pun">相当于</span><span class="typ">Apache</span><span class="pun">里的[</span><span class="pln">L</span><span class="pun">]标记,表示完成</span><span class="pln">rewrite </span><span class="pun">*</span> <span class="kwd">break</span> <span class="pun">终止匹配,</span> <span class="pun">不再匹配后面的规则</span> <span class="pun">*</span><span class="pln"> redirect </span><span class="pun">返回</span><span class="lit">302</span><span class="pun">临时重定向</span> <span class="pun">地址栏会显示跳转后的地址</span> <span class="pun">*</span><span class="pln"> permanent </span><span class="pun">返回</span><span class="lit">301</span><span class="pun">永久重定向</span> <span class="pun">地址栏会显示跳转后的地址</span> |
一些可用的全局变量有,可以用做条件判断
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<span class="pln"> $args $content_length $content_type $document_root $document_uri $host $http_user_agent $http_cookie $limit_rate $request_body_file $request_method $remote_addr $remote_port $remote_user $request_filename $request_uri $query_string $scheme $server_protocol $server_addr $server_name $server_port $uri</span> |
结合QeePHP的例子
1 2 3 4 |
<span class="kwd">if</span> <span class="pun">(!-</span><span class="pln">d $request_filename</span><span class="pun">)</span> <span class="pun">{</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/([a-z-A-Z]+)/</span><span class="pun">([</span><span class="pln">a</span><span class="pun">-</span><span class="pln">z</span><span class="pun">-</span><span class="pln">A</span><span class="pun">-</span><span class="pln">Z</span><span class="pun">]+)/?(.*)</span><span class="pln">$ </span><span class="pun">/</span><span class="pln">index</span><span class="pun">.</span><span class="pln">php</span><span class="pun">?</span><span class="kwd">namespace</span><span class="pun">=</span><span class="pln">user</span><span class="pun">&</span><span class="pln">controller</span><span class="pun">=</span><span class="pln">$1</span><span class="pun">&</span><span class="pln">action</span><span class="pun">=</span><span class="pln">$2</span><span class="pun">&</span><span class="pln">$3 </span><span class="kwd">last</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/([a-z-A-Z]+)/</span><span class="pun">?</span><span class="pln">$ </span><span class="pun">/</span><span class="pln">index</span><span class="pun">.</span><span class="pln">php</span><span class="pun">?</span><span class="kwd">namespace</span><span class="pun">=</span><span class="pln">user</span><span class="pun">&</span><span class="pln">controller</span><span class="pun">=</span><span class="pln">$1 </span><span class="kwd">last</span><span class="pun">;</span> <span class="kwd">break</span><span class="pun">;</span> |
多目录转成参数
1 2 3 4 5 |
<span class="com">#abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2</span> <span class="kwd">if</span> <span class="pun">(</span><span class="pln">$host </span><span class="pun">~*</span> <span class="pun">(.*)</span><span class="pln">\.domain\.com</span><span class="pun">)</span> <span class="pun">{</span> <span class="kwd">set</span><span class="pln"> $sub_name $1</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/sort\/(\d+)\/?$ /</span><span class="pln">index</span><span class="pun">.</span><span class="pln">php</span><span class="pun">?</span><span class="pln">act</span><span class="pun">=</span><span class="pln">sort</span><span class="pun">&</span><span class="pln">cid</span><span class="pun">=</span><span class="pln">$sub_name</span><span class="pun">&</span><span class="pln">id</span><span class="pun">=</span><span class="pln">$1 </span><span class="kwd">last</span><span class="pun">;</span> <span class="pun">}</span> |
目录对换
1 2 3 4 5 6 |
<span class="com">#123456/xxxx -> /xxxx?id=123456</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/(\d+)/</span><span class="pun">(.+)/</span> <span class="pun">/</span><span class="pln">$2</span><span class="pun">?</span><span class="pln">id</span><span class="pun">=</span><span class="pln">$1 </span><span class="kwd">last</span><span class="pun">;</span> <span class="com">#例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:</span> <span class="kwd">if</span> <span class="pun">(</span><span class="pln">$http_user_agent </span><span class="pun">~</span><span class="pln"> MSIE</span><span class="pun">)</span> <span class="pun">{</span><span class="pln"> rewrite </span><span class="pun">^(.*)</span><span class="pln">$ </span><span class="pun">/</span><span class="pln">nginx</span><span class="pun">-</span><span class="pln">ie</span><span class="pun">/</span><span class="pln">$1 </span><span class="kwd">break</span><span class="pun">;</span> <span class="pun">}</span> |
目录自动加“/”
1 2 3 |
<span class="kwd">if</span> <span class="pun">(-</span><span class="pln">d $request_filename</span><span class="pun">){</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/(.*)([^/])$ http:/</span><span class="pun">/</span><span class="pln">$host</span><span class="pun">/</span><span class="pln">$1$2</span><span class="pun">/</span><span class="pln"> permanent</span><span class="pun">;</span> <span class="pun">}</span> |
禁止htaccess
1 2 3 |
<span class="pln"> location </span><span class="pun">~/</span><span class="pln">\.ht </span><span class="pun">{</span><span class="pln"> deny all</span><span class="pun">;</span> <span class="pun">}</span> |
禁止多个目录
1 2 3 4 |
<span class="pln"> location </span><span class="pun">~</span> <span class="pun">^</span><span class="str">/(cron|templates)/</span> <span class="pun">{</span><span class="pln"> deny all</span><span class="pun">;</span> <span class="kwd">break</span><span class="pun">;</span> <span class="pun">}</span> |
禁止以/data开头的文件
1 2 3 4 |
<span class="com">#可以禁止/data/下多级目录下.log.txt等请求;</span><span class="pln"> location </span><span class="pun">~</span> <span class="pun">^/</span><span class="pln">data </span><span class="pun">{</span><span class="pln"> deny all</span><span class="pun">;</span> <span class="pun">}</span> |
禁止单个目录不能禁止.log.txt能请求
1 2 3 |
<span class="pln"> location </span><span class="pun">/</span><span class="pln">searchword</span><span class="pun">/</span><span class="pln">cron</span><span class="pun">/</span> <span class="pun">{</span><span class="pln"> deny all</span><span class="pun">;</span> <span class="pun">}</span> |
禁止单个文件
1 2 3 |
<span class="pln"> location </span><span class="pun">~</span> <span class="str">/data/</span><span class="pln">sql</span><span class="pun">/</span><span class="pln">data</span><span class="pun">.</span><span class="pln">sql </span><span class="pun">{</span><span class="pln"> deny all</span><span class="pun">;</span> <span class="pun">}</span> |
给favicon.ico和robots.txt设置过期时间
1 2 3 4 5 6 7 8 9 10 11 12 |
<span class="com">#这里为favicon.ico为99 天,robots.txt为7天并不记录404错误日志</span><span class="pln"> location </span><span class="pun">~(</span><span class="pln">favicon</span><span class="pun">.</span><span class="pln">ico</span><span class="pun">)</span> <span class="pun">{</span><span class="pln"> log_not_found off</span><span class="pun">;</span><span class="pln"> expires </span><span class="lit">99d</span><span class="pun">;</span> <span class="kwd">break</span><span class="pun">;</span> <span class="pun">}</span><span class="pln"> location </span><span class="pun">~(</span><span class="pln">robots</span><span class="pun">.</span><span class="pln">txt</span><span class="pun">)</span> <span class="pun">{</span><span class="pln"> log_not_found off</span><span class="pun">;</span><span class="pln"> expires </span><span class="lit">7d</span><span class="pun">;</span> <span class="kwd">break</span><span class="pun">;</span> <span class="pun">}</span> |
设定某个文件的过期时间;这里为600秒,并不记录访问日志
1 2 3 4 5 6 |
<span class="pln"> location </span><span class="pun">^~</span> <span class="pun">/</span><span class="pln">html</span><span class="pun">/</span><span class="pln">scripts</span><span class="pun">/</span><span class="pln">loadhead_1</span><span class="pun">.</span><span class="pln">js </span><span class="pun">{</span><span class="pln"> access_log off</span><span class="pun">;</span><span class="pln"> root </span><span class="pun">/</span><span class="pln">opt</span><span class="pun">/</span><span class="pln">nginx</span><span class="pun">/</span><span class="pln">htdocs</span><span class="pun">;</span><span class="pln"> expires </span><span class="lit">600</span><span class="pun">;</span> <span class="kwd">break</span><span class="pun">;</span> <span class="pun">}</span> |
文件反盗链并设置过期时间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<span class="com">#这里的return 412 为自定义的http状态码,默认为403,方便找出正确的盗链的请求</span> <span class="com">#rewrite ^/ http://leech.168seo.cn/leech.gif;显示一张防盗链图片</span> <span class="com">#access_log off; 不记录访问日志,减轻压力</span> <span class="com">#expires 3d 所有文件3天的浏览器缓存</span><span class="pln"> location </span><span class="pun">~*</span> <span class="pun">^.+</span><span class="pln">\.</span><span class="pun">(</span><span class="pln">jpg</span><span class="pun">|</span><span class="pln">jpeg</span><span class="pun">|</span><span class="pln">gif</span><span class="pun">|</span><span class="pln">png</span><span class="pun">|</span><span class="pln">swf</span><span class="pun">|</span><span class="pln">rar</span><span class="pun">|</span><span class="pln">zip</span><span class="pun">|</span><span class="pln">css</span><span class="pun">|</span><span class="pln">js</span><span class="pun">)</span><span class="pln">$ </span><span class="pun">{</span><span class="pln"> valid_referers none blocked </span><span class="pun">*.</span><span class="pln">markdream</span><span class="pun">.</span><span class="pln">com </span><span class="pun">*.</span><span class="pln">markdream</span><span class="pun">.</span><span class="pln">net localhost </span><span class="lit">208.97</span><span class="pun">.</span><span class="lit">167.194</span><span class="pun">;</span> <span class="kwd">if</span> <span class="pun">(</span><span class="pln">$invalid_referer</span><span class="pun">)</span> <span class="pun">{</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/ http:/</span><span class="pun">/</span><span class="pln">leech</span><span class="pun">.</span><span class="pln">markdream</span><span class="pun">.</span><span class="pln">com</span><span class="pun">/</span><span class="pln">leech</span><span class="pun">.</span><span class="pln">gif</span><span class="pun">;</span> <span class="kwd">return</span> <span class="lit">412</span><span class="pun">;</span> <span class="kwd">break</span><span class="pun">;</span> <span class="pun">}</span><span class="pln"> access_log off</span><span class="pun">;</span><span class="pln"> root </span><span class="pun">/</span><span class="pln">opt</span><span class="pun">/</span><span class="pln">lampp</span><span class="pun">/</span><span class="pln">htdocs</span><span class="pun">/</span><span class="pln">web</span><span class="pun">;</span><span class="pln"> expires </span><span class="lit">3d</span><span class="pun">;</span> <span class="kwd">break</span><span class="pun">;</span> <span class="pun">}</span> |
只允许固定ip访问网站,并加上密码
1 2 3 4 5 6 7 |
<span class="pln"> root </span><span class="pun">/</span><span class="pln">opt</span><span class="pun">/</span><span class="pln">htdocs</span><span class="pun">/</span><span class="pln">www</span><span class="pun">;</span><span class="pln"> allow </span><span class="lit">208.97</span><span class="pun">.</span><span class="lit">167.194</span><span class="pun">;</span><span class="pln"> allow </span><span class="lit">222.33</span><span class="pun">.</span><span class="lit">1.2</span><span class="pun">;</span><span class="pln"> allow </span><span class="lit">231.152</span><span class="pun">.</span><span class="lit">49.4</span><span class="pun">;</span><span class="pln"> deny all</span><span class="pun">;</span><span class="pln"> auth_basic </span><span class="str">"C1G_ADMIN"</span><span class="pun">;</span><span class="pln"> auth_basic_user_file htpasswd</span><span class="pun">;</span> |
将多级目录下的文件转成一个文件,增强seo效果
1 2 |
<span class="com">#/job-123-456-789.html 指向/job/123/456/789.html</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /</span><span class="pln">job</span><span class="pun">/</span><span class="pln">$1</span><span class="pun">/</span><span class="pln">$2</span><span class="pun">/</span><span class="pln">jobshow_$3</span><span class="pun">.</span><span class="pln">html </span><span class="kwd">last</span><span class="pun">;</span> |
将根目录下某个文件夹指向2级目录
1 2 3 |
<span class="com">#如/shanghaijob/ 指向 /area/shanghai/</span> <span class="com">#如果你将last改成permanent,那么浏览器地址栏显是 /location/shanghai/</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/([0-9a-z]+)job/</span><span class="pun">(.*)</span><span class="pln">$ </span><span class="pun">/</span><span class="pln">area</span><span class="pun">/</span><span class="pln">$1</span><span class="pun">/</span><span class="pln">$2 </span><span class="kwd">last</span><span class="pun">;</span> |
上面例子有个问题是访问/shanghai 时将不会匹配
1 2 |
<span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/([0-9a-z]+)job$ /</span><span class="pln">area</span><span class="pun">/</span><span class="pln">$1</span><span class="pun">/</span> <span class="kwd">last</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/([0-9a-z]+)job/</span><span class="pun">(.*)</span><span class="pln">$ </span><span class="pun">/</span><span class="pln">area</span><span class="pun">/</span><span class="pln">$1</span><span class="pun">/</span><span class="pln">$2 </span><span class="kwd">last</span><span class="pun">;</span> |
这样/shanghai 也可以访问了,但页面中的相对链接无法使用,如./list_1.html真实地址是/area /shanghia/list_1.html会变成/list_1.html,导至无法访问。
那我加上自动跳转也是不行咯(-d $request_filename)它有个条件是必需为真实目录,而我的rewrite不是的,所以没有效果
1 2 3 |
<span class="kwd">if</span> <span class="pun">(-</span><span class="pln">d $request_filename</span><span class="pun">){</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/(.*)([^/])$ http:/</span><span class="pun">/</span><span class="pln">$host</span><span class="pun">/</span><span class="pln">$1$2</span><span class="pun">/</span><span class="pln"> permanent</span><span class="pun">;</span> <span class="pun">}</span> |
知道原因后就好办了,让我手动跳转吧
1 2 |
<span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/([0-9a-z]+)job$ /</span><span class="pln">$1job</span><span class="pun">/</span><span class="pln"> permanent</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/([0-9a-z]+)job/</span><span class="pun">(.*)</span><span class="pln">$ </span><span class="pun">/</span><span class="pln">area</span><span class="pun">/</span><span class="pln">$1</span><span class="pun">/</span><span class="pln">$2 </span><span class="kwd">last</span><span class="pun">;</span> |
文件和目录不存在的时候重定向:
1 2 3 |
<span class="kwd">if</span> <span class="pun">(!-</span><span class="pln">e $request_filename</span><span class="pun">)</span> <span class="pun">{</span><span class="pln"> proxy_pass http</span><span class="pun">:</span><span class="com">//127.0.0.1; </span> <span class="pun">}</span> |
域名跳转
1 2 3 4 5 6 7 8 |
<span class="pln"> server </span><span class="pun">{</span><span class="pln"> listen </span><span class="lit">80</span><span class="pun">;</span><span class="pln"> server_name jump</span><span class="pun">.</span><span class="pln">markdream</span><span class="pun">.</span><span class="pln">com</span><span class="pun">;</span><span class="pln"> index index</span><span class="pun">.</span><span class="pln">html index</span><span class="pun">.</span><span class="pln">htm index</span><span class="pun">.</span><span class="pln">php</span><span class="pun">;</span><span class="pln"> root </span><span class="pun">/</span><span class="pln">opt</span><span class="pun">/</span><span class="pln">nginx</span><span class="pun">/</span><span class="pln">htdocs</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/ http:/</span><span class="pun">/</span><span class="pln">www</span><span class="pun">.</span><span class="pln">markdream</span><span class="pun">.</span><span class="pln">com</span><span class="pun">/;</span><span class="pln"> access_log off</span><span class="pun">;</span> <span class="pun">}</span> |
多域名转向
1 2 3 4 5 6 |
<span class="pln"> server_name www</span><span class="pun">.</span><span class="pln">markdream</span><span class="pun">.</span><span class="pln">com www</span><span class="pun">.</span><span class="pln">markdream</span><span class="pun">.</span><span class="pln">net</span><span class="pun">;</span><span class="pln"> index index</span><span class="pun">.</span><span class="pln">html index</span><span class="pun">.</span><span class="pln">htm index</span><span class="pun">.</span><span class="pln">php</span><span class="pun">;</span><span class="pln"> root </span><span class="pun">/</span><span class="pln">opt</span><span class="pun">/</span><span class="pln">lampp</span><span class="pun">/</span><span class="pln">htdocs</span><span class="pun">;</span> <span class="kwd">if</span> <span class="pun">(</span><span class="pln">$host </span><span class="pun">~</span> <span class="str">"markdream\.net"</span><span class="pun">)</span> <span class="pun">{</span><span class="pln"> rewrite </span><span class="pun">^(.*)</span><span class="pln"> http</span><span class="pun">:</span><span class="com">//www.168seo.cn$1 permanent; </span> <span class="pun">}</span> |
三级域名跳转
1 2 3 4 |
<span class="kwd">if</span> <span class="pun">(</span><span class="pln">$http_host </span><span class="pun">~*</span> <span class="str">"^(.*)\.i\.markdream\.com$"</span><span class="pun">)</span> <span class="pun">{</span><span class="pln"> rewrite </span><span class="pun">^(.*)</span><span class="pln"> http</span><span class="pun">:</span><span class="com">//top.yingjiesheng.com$1; </span> <span class="kwd">break</span><span class="pun">;</span> <span class="pun">}</span> |
域名镜像
1 2 3 4 5 6 7 8 |
<span class="pln"> server </span><span class="pun">{</span><span class="pln"> listen </span><span class="lit">80</span><span class="pun">;</span><span class="pln"> server_name mirror</span><span class="pun">.</span><span class="pln">markdream</span><span class="pun">.</span><span class="pln">com</span><span class="pun">;</span><span class="pln"> index index</span><span class="pun">.</span><span class="pln">html index</span><span class="pun">.</span><span class="pln">htm index</span><span class="pun">.</span><span class="pln">php</span><span class="pun">;</span><span class="pln"> root </span><span class="pun">/</span><span class="pln">opt</span><span class="pun">/</span><span class="pln">lampp</span><span class="pun">/</span><span class="pln">htdocs</span><span class="pun">/</span><span class="pln">www</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/(.*) http:/</span><span class="pun">/</span><span class="pln">www</span><span class="pun">.</span><span class="pln">markdream</span><span class="pun">.</span><span class="pln">com</span><span class="pun">/</span><span class="pln">$1 </span><span class="kwd">last</span><span class="pun">;</span><span class="pln"> access_log off</span><span class="pun">;</span> <span class="pun">}</span> |
某个子目录作镜向
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<span class="pln"> location </span><span class="pun">^~</span> <span class="pun">/</span><span class="pln">zhaopinhui </span><span class="pun">{</span><span class="pln"> rewrite </span><span class="pun">^.+</span><span class="pln"> http</span><span class="pun">:</span><span class="com">//zph.168seo.cn/ last; </span> <span class="kwd">break</span><span class="pun">;</span> <span class="pun">}</span> <span class="com">#discuz ucenter home (uchome) rewrite</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/(space|network)-(.+)\.html$ /</span><span class="pln">$1</span><span class="pun">.</span><span class="pln">php</span><span class="pun">?</span><span class="pln">rewrite</span><span class="pun">=</span><span class="pln">$2 </span><span class="kwd">last</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/(space|network)\.html$ /</span><span class="pln">$1</span><span class="pun">.</span><span class="pln">php </span><span class="kwd">last</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/([0-9]+)$ /</span><span class="pln">space</span><span class="pun">.</span><span class="pln">php</span><span class="pun">?</span><span class="pln">uid</span><span class="pun">=</span><span class="pln">$1 </span><span class="kwd">last</span><span class="pun">;</span><span class="pln"> discuz </span><span class="lit">7</span><span class="pln"> rewrite rewrite </span><span class="pun">^(.*)/</span><span class="pln">archiver</span><span class="pun">/((</span><span class="pln">fid</span><span class="pun">|</span><span class="pln">tid</span><span class="pun">)-[</span><span class="pln">\w\-</span><span class="pun">]+</span><span class="pln">\.html</span><span class="pun">)</span><span class="pln">$ $1</span><span class="pun">/</span><span class="pln">archiver</span><span class="pun">/</span><span class="pln">index</span><span class="pun">.</span><span class="pln">php</span><span class="pun">?</span><span class="pln">$2 </span><span class="kwd">last</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^(.*)/</span><span class="pln">forum</span><span class="pun">-([</span><span class="lit">0</span><span class="pun">-</span><span class="lit">9</span><span class="pun">]+)-([</span><span class="lit">0</span><span class="pun">-</span><span class="lit">9</span><span class="pun">]+)</span><span class="pln">\.html$ $1</span><span class="pun">/</span><span class="pln">forumdisplay</span><span class="pun">.</span><span class="pln">php</span><span class="pun">?</span><span class="pln">fid</span><span class="pun">=</span><span class="pln">$2</span><span class="pun">&</span><span class="pln">page</span><span class="pun">=</span><span class="pln">$3 </span><span class="kwd">last</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^(.*)/</span><span class="pln">thread</span><span class="pun">-([</span><span class="lit">0</span><span class="pun">-</span><span class="lit">9</span><span class="pun">]+)-([</span><span class="lit">0</span><span class="pun">-</span><span class="lit">9</span><span class="pun">]+)-([</span><span class="lit">0</span><span class="pun">-</span><span class="lit">9</span><span class="pun">]+)</span><span class="pln">\.html$ $1</span><span class="pun">/</span><span class="pln">viewthread</span><span class="pun">.</span><span class="pln">php</span><span class="pun">?</span><span class="pln">tid</span><span class="pun">=</span><span class="pln">$2</span><span class="pun">&</span><span class="pln">extra</span><span class="pun">=</span><span class="pln">page\%</span><span class="lit">3D</span><span class="pln">$4</span><span class="pun">&</span><span class="pln">page</span><span class="pun">=</span><span class="pln">$3 </span><span class="kwd">last</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^(.*)/</span><span class="pln">profile</span><span class="pun">-(</span><span class="pln">username</span><span class="pun">|</span><span class="pln">uid</span><span class="pun">)-(.+)</span><span class="pln">\.html$ $1</span><span class="pun">/</span><span class="pln">viewpro</span><span class="pun">.</span><span class="pln">php</span><span class="pun">?</span><span class="pln">$2</span><span class="pun">=</span><span class="pln">$3 </span><span class="kwd">last</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^(.*)/</span><span class="pln">space</span><span class="pun">-(</span><span class="pln">username</span><span class="pun">|</span><span class="pln">uid</span><span class="pun">)-(.+)</span><span class="pln">\.html$ $1</span><span class="pun">/</span><span class="pln">space</span><span class="pun">.</span><span class="pln">php</span><span class="pun">?</span><span class="pln">$2</span><span class="pun">=</span><span class="pln">$3 </span><span class="kwd">last</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^(.*)/</span><span class="pln">tag</span><span class="pun">-(.+)</span><span class="pln">\.html$ $1</span><span class="pun">/</span><span class="pln">tag</span><span class="pun">.</span><span class="pln">php</span><span class="pun">?</span><span class="pln">name</span><span class="pun">=</span><span class="pln">$2 </span><span class="kwd">last</span><span class="pun">;</span> |
给discuz某版块单独配置域名
1 2 3 4 5 6 7 8 |
<span class="pln"> server_name bbs</span><span class="pun">.</span><span class="pln">markdream</span><span class="pun">.</span><span class="pln">com news</span><span class="pun">.</span><span class="pln">markdream</span><span class="pun">.</span><span class="pln">com</span><span class="pun">;</span><span class="pln"> location </span><span class="pun">=</span> <span class="pun">/</span> <span class="pun">{</span> <span class="kwd">if</span> <span class="pun">(</span><span class="pln">$http_host </span><span class="pun">~</span><span class="pln"> news\.markdream</span><span class="pun">.</span><span class="pln">com$</span><span class="pun">)</span> <span class="pun">{</span><span class="pln"> rewrite </span><span class="pun">^.+</span><span class="pln"> http</span><span class="pun">:</span><span class="com">//news.168seo.cn/forum-831-1.html last; </span> <span class="kwd">break</span><span class="pun">;</span> <span class="pun">}</span> <span class="pun">}</span> |
discuz ucenter 头像 rewrite 优化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<span class="pln"> location </span><span class="pun">^~</span> <span class="pun">/</span><span class="pln">ucenter </span><span class="pun">{</span><span class="pln"> location </span><span class="pun">~</span> <span class="pun">.*</span><span class="pln">\.php</span><span class="pun">?</span><span class="pln">$ </span><span class="pun">{</span> <span class="com">#fastcgi_pass unix:/tmp/php-cgi.sock; </span><span class="pln"> fastcgi_pass </span><span class="lit">127.0</span><span class="pun">.</span><span class="lit">0.1</span><span class="pun">:</span><span class="lit">9000</span><span class="pun">;</span><span class="pln"> fastcgi_index index</span><span class="pun">.</span><span class="pln">php</span><span class="pun">;</span><span class="pln"> include fcgi</span><span class="pun">.</span><span class="pln">conf</span><span class="pun">;</span> <span class="pun">}</span><span class="pln"> location </span><span class="pun">/</span><span class="pln">ucenter</span><span class="pun">/</span><span class="pln">data</span><span class="pun">/</span><span class="pln">avatar </span><span class="pun">{</span><span class="pln"> log_not_found off</span><span class="pun">;</span><span class="pln"> access_log off</span><span class="pun">;</span><span class="pln"> location </span><span class="pun">~</span> <span class="pun">/(.*)</span><span class="pln">_big\.jpg$ </span><span class="pun">{</span><span class="pln"> error_page </span><span class="lit">404</span> <span class="pun">/</span><span class="pln">ucenter</span><span class="pun">/</span><span class="pln">images</span><span class="pun">/</span><span class="pln">noavatar_big</span><span class="pun">.</span><span class="pln">gif</span><span class="pun">;</span> <span class="pun">}</span><span class="pln"> location </span><span class="pun">~</span> <span class="pun">/(.*)</span><span class="pln">_middle\.jpg$ </span><span class="pun">{</span><span class="pln"> error_page </span><span class="lit">404</span> <span class="pun">/</span><span class="pln">ucenter</span><span class="pun">/</span><span class="pln">images</span><span class="pun">/</span><span class="pln">noavatar_middle</span><span class="pun">.</span><span class="pln">gif</span><span class="pun">;</span> <span class="pun">}</span><span class="pln"> location </span><span class="pun">~</span> <span class="pun">/(.*)</span><span class="pln">_small\.jpg$ </span><span class="pun">{</span><span class="pln"> error_page </span><span class="lit">404</span> <span class="pun">/</span><span class="pln">ucenter</span><span class="pun">/</span><span class="pln">images</span><span class="pun">/</span><span class="pln">noavatar_small</span><span class="pun">.</span><span class="pln">gif</span><span class="pun">;</span> <span class="pun">}</span><span class="pln"> expires </span><span class="lit">300</span><span class="pun">;</span> <span class="kwd">break</span><span class="pun">;</span> <span class="pun">}</span> <span class="pun">}</span> |
选择跳转目录到域名
1 2 3 4 5 6 7 |
<span class="com">#www.168seo.cn/news/te111.html -->news.168seo.cn/te111.html</span> <span class="com">#排除dongtai、about文件夹</span><span class="pln"> location </span><span class="pun">/</span> <span class="pun">{</span> <span class="kwd">if</span> <span class="pun">(</span><span class="pln">$request_uri </span><span class="pun">!~</span> <span class="pun">^</span><span class="str">/(dongtai|about)/</span><span class="pun">)</span> <span class="pun">{</span><span class="pln"> rewrite </span><span class="pun">/(</span><span class="pln">\w</span><span class="pun">*)/(.*)</span><span class="pln"> http</span><span class="pun">:</span><span class="com">//$1.168seo.cn/$2 break;</span> <span class="pun">}</span> <span class="pun">}</span> |

