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阶段,并执行本请求后续的执行阶段…
参照宝塔自带的伪静态
发现有些是需要用location包起来,意思是指定伪静态存入的路径
location / {
}