apache 转 nginx 出现页面404,网上很多直接转的工具没用!无耐研究了一下nginx的写法解决问题


参考了以下的写法规则

主栏目目录形式:      www.xxx.com/news         

子栏目目录形式:   www.xxx.com/news/yushouxinxi     

具体文章目录形式:www.xxx.com/news/yushouxinxi/6281.htm

 

规则如下:

rewrite ^([^\.]*)/news$ $1/article_list.php last;
rewrite ^([^\.]*)/news/(.*)$ $1/article_list.php?cate=$2 last;
rewrite ^([^\.]*)/news/(.*)/([0-9]+)\.htm$ $1/article_show.php?path=$2&id=$3 last;


分析

大至就是正则匹配,将匹配到的值$123.. 拼接

rewrite ^([^\.]*)/news$ $1/article_list.php last;

匹配域名根路径 https://www.xxx.com/


rewrite ^([^\.]*)/news$ $1/article_list.php last;

匹配固定结尾字符串news


rewrite ^([^\.]*)/news$ $1/article_list.php last;

$1代表批一个刮号([^\.]*)匹配到的值,在拼接/article_list.php为完成路径


最终效果就是 www.xxx.com/news  =  www.xxx.com/article_list.php



last和break字符意思

last: 停止当前这个请求,并根据rewrite匹配的规则重新发起一个请求。新请求又从第一阶段开始执行…
break:相对last,break并不会重新发起一个请求,只是跳过当前的rewrite阶段,并执行本请求后续的执行阶段…



参照宝塔自带的伪静态

image.png


发现有些是需要用location包起来,意思是指定伪静态存入的路径

location / {



image.png