php一个入口 nginx 自动带斜线,Nginx 自动加斜杠

在 Nginx 里面,目前的 WordPress 是这样子配置 rewrite 的:

location / {

if (-d wp-admin){

break;

}

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;

}

}

不过如果我们访问:

http://domain.com/wp-admin

注意后面没有斜杠的时候是可以打开的

但是如果再点其他的链接,那么目录引用的层级就会有问题,这时候我们需要加上一个自动加斜杠的机制。

解决方案

在配置文件中location里加入如下代码

if (-d $request_filename) {

rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;

}

这样再对 http://www.easecloud.cn/wp-admin 请求,nginx 就会进行判断了,如果请求的是一个文件夹,会自动在最后加上 / 符号,如果请求的是一个文件,则不会改变原有 url

接下来对这段代码进行一个解释

if (-d $request_filename),如果请求的是一个文件夹,则为真,进到if语句中执行

rewrite: 执行url重写

^/(.*)([^/])$ 表示以 / 符号开始并紧跟着任何字符,同时不是以 / 为结束的字符串

http://$host/$1$2/ 表示的重写后的地址,$host是请求的域名,注意为了匹配最后一个字符不为 /,最后一个字符会被分开,被 $2 捕获,将 $1$2 拼起来就是原来完整的字符串;

permanent 表示使用 301 响应码返回永久重定向。

【转载请附】愿以此功德,回向 >&gt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值