如果没有尾部斜杠,Nginx 会导致 301 重定向

2024-03-02

我在使用 NAT 的虚拟机中运行 nginx,当我从主机访问它时遇到重定向问题。

按预期工作

  • http://localhost:8080/test/index.htm: works.
  • http://localhost:8080/test/: works.

没有按预期工作

  • http://localhost:8080/test: 重定向到http://localhost/test/。这是not我想要的是。(注意它删除了端口号)

我尝试过的

根据我用谷歌搜索的内容,我尝试过server_name_in_redirect off; and rewrite ^([^.]*[^/])$ $1/ permanent;,都没有成功。

我的default.conf:

server {
    listen       80;
    server_name  localhost;
    # server_name_in_redirect off;
    
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }

    location ~ \.php$ {
    # rewrite ^([^.]*[^/])$ $1/ permanent;
        root           /usr/share/nginx/html;
        try_files      $uri =404;
        #fastcgi_pass   127.0.0.1:9000;
        fastcgi_pass   unix:/tmp/php5-fpm.sock;
        fastcgi_index  index.php;
        include        fastcgi_params;
    }


    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

一个对我有用的更简单的解决方案是禁用绝对重定向absolute_redirect off;如以下示例所示:

server {
    listen 80;
    server_name  localhost;
    absolute_redirect off;

    location /foo/ {
        proxy_pass http://bar/;
    }

如果我运行curl onhttp://localhost:8080/foo,我可以看到Location重定向 HTTP 响应中的标头给出为/foo/并不是http://localhost/foo/.

$ curl -I http://localhost:8080/foo
HTTP/1.1 301 Moved Permanently
Server: nginx/1.13.8
Date: Tue, 03 Apr 2018 20:13:28 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: /foo/

由此看来,我认为任何网络浏览器都会根据相对位置执行正确的操作。在 Chrome 上测试,效果很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果没有尾部斜杠,Nginx 会导致 301 重定向 的相关文章

随机推荐

  • HTML5,div,隐藏,点击显示

    我有一个 div 末尾有一个按钮 我希望当有人按下该按钮时 另一个 div 前一个 div 下方 应该出现 其中包含我将其放入 div 内的内容 我正在使用以下代码 HTML div a href REGISTER a div br br
  • 具有两个或多个当前值的 Delphi 进度条

    我想在我的软件中制作一种多色条 一种进度条 但有两个当前值 这就是我需要它的原因 我有一些 预算部分 每个部分都有自己的限制 100 美元 1000 美元等 我还有一个用于添加新账单 并将账单链接到预算部分 的编辑表单 在这个编辑器中 我想
  • Hibernate 在 ManyToOne 关系中处理长 0 值而不是 NULL

    我使用 Hibernate 来访问旧数据库 对于某些表 不强制执行父子引用完整性 并且long对于子表中的某些 父 列 使用 0 值代替 NULL 以表示 无父 我仍然想使用这些关系 ManyToOne and OneToMany字段 但得
  • 无法通过 RIA 服务访问 EntityObject 类型

    我的实体框架模型是从 SQL Server 数据库生成的 由于我需要从 Silverlight 访问数据库 因此我根据 EF 模型为 RIAServices 生成了一个 DomainService Product是自动生成的之一Entity
  • 一次对多个属性使用“转换为自动属性”

    我发现自己经常使用 Resharper 的 转换为自动属性 重构来删除 C 3 0 之前的样板代码 有什么方法可以将其应用到单个类中的所有属性立刻 ReSharper 可以做到这一点 Options gt Code Cleanup gt U
  • Pygame:display.update() 在时钟延迟后才会更新

    我正在使用 pygametime Clock以较低的 FPS 运行我的游戏 我注意到我的输入似乎需要额外一帧才能生效 我做了一些调试 发现这不是问题pygame event get 而是与pygame display update 我编写了
  • DynamoDBScanExpression withLimit 返回的记录多于限制

    必须列出 DynamoDB 表中的所有记录 无需任何过滤表达式 我想限制记录数量 因此将 DynamoDBScanExpression 与 setLimit 结合使用 DynamoDBScanExpression scanExpressio
  • 在 Visual Studio 2012 中以编程方式指定专用扩展库

    VS 2012 的最新功能之一是能够创建私人延伸画廊 http blogs msdn com b visualstudio archive 2011 10 03 private extension galleries for the ent
  • 异步管道不会将对象数据填充到模板中

    谁能帮我看看我的模板中是否存在语法错误 它不会给出错误 但也不会将数据填充到模板中 div h2 hero h2 h2 hero name details h2 div div div
  • 将额外参数传递给 C# 回调

    如何向以下回调添加额外参数 objXmpp OnLogin new ObjectHandler objXmppArun OnLogin private void objXmppArun OnLogin object sender 是否可以向
  • 如何在 JavaScript 中查找到已知位置的距离

    在浏览器中使用 JavaScript 如何确定从我当前位置到另一个我有纬度和经度的位置的距离 如果您的代码在浏览器中运行 您可以使用 HTML5 地理定位 API window navigator geolocation getCurren
  • Angular JS:如何绑定到 Promise

    我正在尝试将承诺与视图绑定 我不知道你是否可以直接这样做 但这就是我正在尝试做的 有什么想法我做错了吗 注意 源代码在超时方面做了一些设计 并使用了静态数据 但这是为了使代码更易于诊断 EDIT JSFiddle 页面 http jsfid
  • 与 REST-assured 相比,使用 SOAP UI 来自动化 CI 的 REST 服务是否有优势

    我必须在我的项目中自动化 REST API 测试并将其集成到 jenkins 中的现有 CI 中 我即将开始使用 REST assured 进行编码 但是我碰巧看到 SOAP UI REST 教程并了解到 SOAP UI 中有一个 Mave
  • 如何在 C# 中读取二进制文件?

    我有一个存在于文本和二进制图像中的文件 我需要从 0 到 30 位置读取相关文本 而 31 上的位置将是二进制格式的图像 我必须遵循哪些步骤才能解决该问题 目前 我正在尝试使用它来阅读它FileStream 然后我将 FileStream
  • .NET 使用错误的 2.0 machine.config 而不是 4.0

    我在 IIS 7 0 Windows Server 2008 R1 上安装了 NET Web 应用程序 我已在服务器上安装了 NET 4 0 并为 4 0 配置了应用程序池和集成管道 由于某种原因 我收到以下错误 500 19 The co
  • 通过三种方法计算 CCA

    我最近研究了 CCA 的概念 并想在 MATLAB 中实现它 但是有一个现有的 matlab 命令佳能 http in mathworks com help stats canoncorr html展示 我想编写自己的代码 我对其进行了广泛
  • SQL 如何根据现有列的计数为新列创建值?

    我有一个正在读取的临时表 我想查看只有两个等级值的列之一 3 或 4 并构建两个新列 一个保存 3 的计数和另一个用于保存 4 的计数 按特定分组 我的代码看起来像这样 Select Max Counting as Total studen
  • 使用 VPC 配置添加 AWS Lambda 导致访问 S3 时超时

    我尝试从 AWS Lambda 访问 S3 和 VPC 上的资源 但由于我将 AWS Lambda 配置为访问 VPC 因此访问 S3 时超时 这是代码 from future import print function import bo
  • 单元测试覆盖调用 super() 的方法

    我试图找出为重写方法编写单元测试的最佳方法 该方法调用 super 作为最后一步 基本上 我想在基类中使用参数之前对其进行处理 下面是一个方法的示例 Override public JobExecution run Job job JobP
  • 如果没有尾部斜杠,Nginx 会导致 301 重定向

    我在使用 NAT 的虚拟机中运行 nginx 当我从主机访问它时遇到重定向问题 按预期工作 http localhost 8080 test index htm works http localhost 8080 test works 没有