Z-Blog 伪静态rewrite 与 nginx 反代冲突的解决以及目录自动加 / 方法

Dynadot 域名注册 | RackNerd 性价比主机 | 搬瓦工 Bandwagon 高速主机

 


 

Z-Blog 的伪静态rewrite规则会与同域名下的反代产生冲突

下面是Z-Blog 的伪静态rewrite规则:

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; 
}

 

最后一段

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

改为

if (!-f $request_filename){
   rewrite ^(?!/apple/|/android/|/hello/|/goodluck/)(.*) /index.php;
}

就是添加了例外路径,多个路径中间用 | 隔开

^(?!/apple/|/android/|/hello/|/goodluck/)

网址目录自动加 / 规则

下面是网址目录自动加 / 规则,要访问z-blog下的子目录,如果浏览器地址栏最后不加 / ,

会被当成文件处理,造成返回页面不存在,比如在z-blog 子目录中放了个speedtest程序,

访问下面的网址就会页面不存在:

https://blog.c-pt.cc/speedtest

必须在网址后面手动加上 / 才行:

https://blog.c-pt.cc/speedtest/

要让程序自动加上 / , 需要在伪静态规则加上

if ( -d $request_filename) {   //判断是否目录存在,存在则继续
rewrite ^([^.]*[^/])$ $1/ permanent;   //在网址路径后面加上 /
}

同上面的反代,rewrite ^后面加上排除的路径,例如:

if ( -d $request_filename) { //判断是否目录存在,存在则继续
rewrite ^(?!/android|/apple)([^.]*[^/])$ $1/ permanent; //在网址路径后面加上 /
}

这样在访问下面两个网址的时候就不会自动加上 / ,就会当成文件来处理:

https://blog.c-pt.cc/android
https://blog.c-pt.cc/apple

 

版权声明:
作者:C-PT
链接:https://c-pt.cc/34.html
来源:C-PT – Blog
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>