nginx伪静态在目录后加斜杆/,指定后缀则不加

232 篇文章 0 订阅
83 篇文章 0 订阅

需要在url访问后缀加/ ,而html等指定后缀不需要加:

if ($request_uri  !~*  \.html$) { 
    rewrite ^(.*[^/])$ $1/ permanent;
}

但是这样.css或者.js也会被加上斜线,使用如下才最好:

rewrite ^([^.]*[^/])$ $1/ permanent;

也就说不包含.并且不以斜线/结尾的才加入。

当然还有如下:

if (-d $request_filename) {
    rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}


这个判断中,如果请求的是一个文件夹,会自动在最后加上/符号,如果请求的是一个文件,则不会改变原有url
接下来对这段代码进行一个解释
1、if (-d $request_filename),如果请求的是一个文件夹,则为真,进到if语句中执行
2、rewrite是执行url重写操作
3、^/(.*)([^/])$表示以/符号开始并紧跟着任何字符,同时不是以/为结束的字符串,在我的url中,(.*)表示的ww,([^/])表示的w
4、 http://$host/$1$2/ 表示的重写后的地址,$host是请求的域名,$1是前面第一个括号里的内容ww,在我的url里就是wordpres $2是前面第二个括号里的内容
5、permanent表示,返回永久重定向的HTTP状态301
 

总结:

主要是对正则需要熟悉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用nginx伪静态隐藏.php后缀并在URL后补斜杠的方法是通过在nginx的配置文件添加相应的规则来实现。 首先,我们需要打开nginx的配置文件,一般位于/etc/nginx/nginx.conf。在该文件,我们可以找到一个名为`server`的块,这是我们需要进行修改的地方。 首先,我们需要在`server`块添加一个`location`块,用于匹配URL以.php结尾的请求。可以使用正则表达式进行匹配,如以下所示: ``` location ~ \.php$ { try_files $uri/ =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php7.4-fpm.sock; #指定php-fpm的sock文件路径 fastcgi_index index.php; include fastcgi_params; } ``` 上面的配置,通过`location`和正则表达式`~ \.php$`来匹配URL以.php结尾的请求。然后,使用`try_files`指令来尝试去寻找以URL后补斜杠的方式来访问文件,若找不到,则返回404错误。 接下来,我们使用`fastcgi_split_path_info`指令将请求分离为两部分,分别为PHP脚本文件路径和路径信息。然后,使用`fastcgi_pass`指令指定php-fpm的sock文件路径,以及`fastcgi_index`指令指定默认的PHP脚本文件名为index.php。 最后,我们将`fastcgi_params`包含进来,以确保正确地传递PHP脚本执行所需的参数。 保存配置文件后,重新加载nginx配置,可以使用`sudo nginx -s reload`命令。 这样,当访问URL时,nginx会自动隐藏.php后缀,并在URL后面自动补上斜杠。例如,如果原始URL为`http://example.com/index.php`,则通过上述配置后,可以直接访问`http://example.com/index/`来访问相应的页面。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值