Nginx下WordPress链接(url伪静态)301永久重定向实现方法

时间:2022-06-01 20:26:50

问题: 

在几个blog程序中折腾的结果~ 
导致url连续二次变化。这是第三次了。 
nginx 通过rewrite 使用 “permanent;”参数 成301永久url重定向。 
以往的url结构 
//www.zzvips.com/post/199/ 
现在需要的url结构 
//www.zzvips.com/archives/199.html 
过程: 
学习nginx的配置规则,学习正则表达式(我也没接触过,学呗。) 
nginx的中文维科:http://wiki.nginx.org/NginxChs 
正则表达式入门:http://zh.wikipedia.org/zh-cn/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F 
//www.zzvips.com/tools/zhengze.html 

简单说明下(认真学习正则表达式-我没认真学^_^): 
^ 表示 匹配字符串的开始. 
$ 表示 匹配字符串的结束. 
$1 $2 表示变量 
([0-9]+) 表示至少1个、最多不限制的数字串. 
头看晕了(不是程序员。)。写出表达式。 
—————————————————- 
—————————————————- 

复制代码代码如下:

<A class="st_tag internal_tag" />
把表达式加入nginx conf 文件。 
—————————————————– 
location / { 
放这里。 

—————————————————- 
完成配置: 

这是我的完整的WordPress nginx rewrite 规则配置。 
1、nginx rewrite网址url变更301重定向。 
2、nginx rewrite iamle.cn 重定向到 www.zzvips.com 。 
3、nginx WordPress rewrite伪静态规则(得以支持WordPress的自定义url)。 
复制代码代码如下:

location / { 
rewrite ^/post/([0-9]+)/$ /archives/$1.html permanent; 
rewrite ^/html/y2009/([0-9]+).html$ /archives/$1.html permanent; 
if ($host !~ "^www\.iamle\.com$"){ 
rewrite ^(.*) //www.zzvips.com$1 permanent; 

if (-f $request_filename/index.html){ 
rewrite (.*) $1/index.html break; 

if (-f $request_filename/index.php){ 
rewrite (.*) $1/index.php; 

if (!-f $request_filename){ 
rewrite (.*) /index.php; 



测试结果: 
访问://www.zzvips.com/post/199/ 即可被跳转到 //www.zzvips.com/archives/199.html