nginx解析目录自动加斜杠的方法

原来windows的服务器换成了linux的nginx服务器,http://www.dnsdizhi.com/t却打不开了,仔细检查后发现http://www.dnsdizhi.com/t/却可以访问。原来不加斜杠时,服务器会访问文件名为t的文件,在windows系统中,如果文件名不存在,它会去访问t的目录,并会自动给目录加斜杠。但是linux系统不会自动判断请求的是一个文件还是一个目录,所以不会自动在请求的最后加上一个斜杠 /,因此http://www.dnsdizhi.com/t打不开。

if (-d requestfilename)rewrite/(.)([/])$http://$host/$1$2/permanent;403 r e q u e s t f i l e n a m e ) r e w r i t e / ( . ∗ ) ( [ / ] ) $ h t t p : / / $ h o s t / $ 1 $ 2 / p e r m a n e n t ; 但 如 果 你 的 网 址 后 面 带 了 端 口 的 话 , 那 么 转 向 时 还 是 会 出 现 403 错 误 。 即 host 变量把端口弄没了,改成 httphostif(d h t t p h o s t 即 可 如 下 代 码 : i f ( − d request_filename) {
rewrite ^/(.*)([^/]) http:// h t t p : / / http_host/ 1 1 <script type="math/tex" id="MathJax-Element-122">1</script>2/ permanent;
}

这样再对 http://www.dnsdizhi.com/t 请求,nginx 就会进行判断了,如果请求的是一个文件夹,会自动在最后加上 / 符号,如果请求的是一个文件,则不会改变原有 url。 接下来对这段代码进行一个解释:
1、if (-d $request_filename),如果请求的是一个文件夹,则为真,进到if语句中执行
2、rewrite 是执行 url 重写操作。
3、^/(.)([^/])$ 表示以/符号开始并紧跟着任何字符,同时不是以/为结束的字符串,在我的url 中,(.) 表示的 news。
5、permanent 表示,返回永久重定向的 HTTP 状态 301。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值