当前位置:  开发笔记 > 编程语言 > 正文

在每个url的末尾添加斜杠(需要为nginx重写规则)

如何解决《在每个url的末尾添加斜杠(需要为nginx重写规则)》经验,为你挑选了3个好方法。

我尝试在每个网址结尾处获得一个"/":

example.com/art

应该

example.com/art/

我使用nginx作为webserver.

我需要重写规则..

为了更好地理解,请检查:

http://3much.schnickschnack.info/art/projekte

如果你按下大图下的一个小缩略图,它会重新加载并显示这个网址:

http://3much.schnickschnack.info/art/projekte/#0

如果我现在在所有网址上都有一个斜杠(最后),那么无需重新加载网站即可.

现在我在nginx-http.conf中有这个设置:

server {
  listen *:80;
  server_name 3much.schnickschnack.info;
  access_log /data/plone/deamon/var/log/main-plone-access.log;
  rewrite ^/(.*)$ /VirtualHostBase/http/3much.schnickschnack.info:80/2much/VirtualHostRoot/$1 last;
  location / {
    proxy_pass http://cache;
  }
}

如何配置nginx以添加斜杠?(我想我应该重写规则?)



1> 小智..:

更有可能我认为你会想要这样的东西:

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

正则表达式转换为:"重写所有URI而不使用任何'.' 在它们中没有以'/'结尾的URI +'/'"或简单地说:"如果URI没有句点并且没有以斜杠结尾,则在末尾添加斜杠"

仅重写URI而没有点的原因使得任何具有文件扩展名的文件都不会被重写.例如你的图像,CSS,JavaScript等,并防止可能的重定向循环,如果使用一些自己的重写的PHP框架也

另外一个常见的重写是:

rewrite ^([^.]*)$ /index.php;

这非常简单地将所有没有句点的URI重写到index.php(或者你将执行控制器的任何文件).


这是互联网上唯一不对所有内容添加斜线的帖子。感谢您的发布。

2> Marc..:
rewrite ^([^.\?]*[^/])$ $1/ permanent;

避免使用/标记的休息URL的查询字符串.

例如

/ myrest /办?d = 12345



3> bryan..:

对于nginx:

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


这将为一切添加一个斜杠 - 所以你最终会得到index.php - > index.php /,并且页面?a = b - > page?a = b /其中OP肯定需要的是页面?a = b - > page /?a = b
推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有