项目需要把后缀为php的全转为html

rewrite

rewrite /app/(.*).php$ https://$host/app/$1.html  permanent;

比如域名为codecc.cn

该rewrite就会把codeccc.cn/app/xxxxx app后面的php文件重写为html

/app/(.*).php$
  • (.*) 可以看做事一个变量,代表的意思是匹配任意除换行符外的字符,后面的 $1就是这个

    比如 app/abc.php 那么这个$1 就 abc

  • 要使用变量需要最rewrite后面加上$ rewrite /app/(.*).php$

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以外的任意字符

nginx 全局变量

  • ~ 为区分大小写匹配
  • ~* 为不区分大小写匹配
  • !~ 和 !~*分别为区分大小写不匹配及不区分大小写不匹配
    文件及目录匹配,其中:
  • -f和!-f用来判断是否存在文件
  • -d和!-d用来判断是否存在目录
  • -e和!-e用来判断是否存在文件或目录
  • -x和!-x用来判断文件是否可执行
    flag标记有:
  • last 相当于Apache里的[L]标记,表示完成rewrite
  • break 终止匹配, 不再匹配后面的规则
  • redirect 返回302临时重定向 地址栏会显示跳转后的地址
  • permanent 返回301永久重定向 地址栏会显示跳转后的地址
$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

具体各自代表的意思搜一下就有了