nginx伪静态规则的小笔记-凯发官网入口

伪静态配置是网站开发的收官之作,明生(monseng)自行开发了一个cms系统,现在也进行到了这一步,因为初次做伪静态设置,是个新人,所以不厌其烦地做个小笔记。

网站关于nginx伪静态规则设置成系统的教程很少,不少都是作者零星的一些记录,刚接触网站的伪静态书写的话,可能有点迷糊,我也是参考了一些网上内容及nginx、php等手册完成了明生(monseng)cms系统的伪静态配置。

伪静态是动态页面url的伪处理,例如php开发的网站,源站都是php运行文件,所以产生的url都可能带有.php后缀,此外,php页面参数的post和get等方法的获取也可能产生如?id=、?page=等类似格式。所以伪静态化就是整理url的格式为常见的html的url格式方式,xxx.html或者xxx/id之类的样式。

所以,伪静态是一种url重写的方法,没有固式样式,可以根据需要来处理。
如果感觉nginx的伪静态规则不好写,可能还是正则有点不熟悉。

php、js、mysql以及nginx都有自己的正规则书写要求,一般性的正规格式是通用的,具体应用场景又有些差异,此外正则如天书般的模糊,平时使用的场景不多,所以也是难处所在。

网站搭建在nginx服务器上,自然要记一下nginx伪静态的配置方法。
nginx伪静态基本格式和语法
nginx伪静态语法很多,一般需求下可以通过rewrite重写url(重定向)来完成伪静态,这种方法最常见,这里主要记一下使用rewrite完成网站的伪静态配置。
一、rewrite基本语法

句法:syntax: rewrite regex replacement [flag]
默认:default: –
语境:context: server,location,if

rewrite 指令最后跟一个 flag 标记,支持的 flag 标记有如下表格所示:
flag 作用
last 本条规则匹配完成后,停止匹配,不再匹配后面的规则
break 本条规则匹配完成后,停止匹配,不再匹配后面的规则
redirect 返回302临时重定向,地址栏会显示跳转后的地址
permanent 返回301永久重定向,地址栏会显示跳转后的地址

二、nginx伪静态常用正则

~      为区分大小写的匹配。
~*     不区分大小写的匹配(匹配firefox的正则同时匹配firefox)。
!~     不匹配的
!~*    不匹配的
.     匹配除换行符以外的任意字符
\w     匹配字母或数字或下划线或汉字
\s     匹配任意的空白符
\d     匹配数字
\b     匹配单词的开始或结束
^     匹配字符串的开始
$     匹配字符串的结束
*     重复零次或更多次
    重复一次或更多次
?     重复零次或一次
{n}     重复n次
{n,}     重复n次或更多次
{n,m}     重复n到m次
*?     重复任意次,但尽可能少重复
?     重复1次或更多次,但尽可能少重复
??     重复0次或1次,但尽可能少重复
{n,m}?     重复n到m次,但尽可能少重复
{n,}?     重复n次以上,但尽可能少重复
\w     匹配任意不是字母,数字,下划线,汉字的字符
\s     匹配任意不是空白符的字符
\d     匹配任意非数字的字符
\b     匹配不是单词开头或结束的位置
[^x]     匹配除了x以外的任意字符

这些正则格式基本上是通用的,需要平时多用多记一下。
三、正式书写伪静态规则
明生(monseng)cms主要页面包括:index.php(凯发官网入口主页),archive.php(栏目页),post.php(文章页),search.php(搜索页)、pay.php(支付页)以及其它附属的登录注册面页等。
凯发官网入口主页分页格式: index.php?page=xxx
栏目的分页格式: archive.php?class_id=xxx&page=yyy
文件页面格式: post.php?id=xxx

需求:文件路经放在cms下,不用动,使用rewrite重写成 .html格式。

location /{
rewrite ^(.*)/cms$ $1/cms/index.php?$2 last;
rewrite ^(.*)/cms/single-([0-9] )\.html$ $1/cms/post.php?id=$2;
rewrite ^(.*)/cms/archive-([0-9] )\.html$ $1/cms/archive.php?id=$2;
rewrite ^(.*)/cms/search.html$ $1/puting/cms/search.php$2;
}

其中;
^(.*):替换url开始
$:替换url结束
$1:原url开始,第一个参数
$2:原url第二个参数
([0-9] ):替换数字id
\:转义字符
/:路径分隔符
其实就是把后面的动态url格式书写成前的伪静态url格式,这样就实现了访问静态url时实际上是动态url的跳转。
page分页符就不用动了默认?page=xxx
这样就完成了一个简单nginx伪静态规则配置,不过说起来容易,就这么点代码要正确写出来还真费围折,如果对正则不熟悉的话。
然后,将源码的url地址写成伪静态处理的格式就完成网站的nginx伪静态基本配制了。
好了,这次简单的nginx伪静态配置笔记就写到这了,希望可以抛砖引玉,对你有所启发。

#笔记 #记录
秀中
tester
2023-04-09
test
tst
2023-04-12
这是一条评论
admin
2023-04-14
现实很残酷,宽永七年德川幕府第三代将军家光时,当时由于实施中央集权,削弱了许多诸侯大名的权力,曾经叱咤一时的武士阶级很多失业沦为浪人。
admin
2023-04-15
tttt
admin
2023-04-16
这里再次发表评论,未经审核
明生笔记
2023-04-16
发表评论
投稿
网站地图