如何在 nginx 中配置重定向到不带尾部斜杠的 url?

2023-12-15

我想将带斜杠的 URL 重定向到不带尾部斜杠的路径。因此 /some-url/ 到 /some-url 会出现重复内容问题

其余的 URL,例如

/some-url.xml
/some-url?
/some-url/?
/some-url?q=v
/some-url/?q=v
/some-url

应该保持不变。 我想要与以下问题完全相反。如何在 nginx 中配置重定向到带有斜杠的 url?


请考虑在您的服务器块内尝试:

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

via: https://www.scalescale.com/tips/nginx/nginx-remove-trailing-slash/

这将查找请求 URI 以“/”开头并以斜杠结尾的任何内容(重写后搜索部分末尾的“$”),并将其替换为开头的“/”和 URI末尾没有结束斜杠。最后一部分表明它将提供 301 重定向服务。

更新: 为了避免从带有 GET 参数的 URI 中删除斜杠,请尝试:

if ($query_string != "") {
    rewrite ^/(.*)/$ /$1 permanent;
}

通常不建议使用 if 语句,但如果您要使用这样的映射:

map $query_string $trailing_slash {
    ""  ""
    default "/";
}
rewrite ^/(.*)/$ /$1$trailing_slash permanent;

它会导致任何带有查询的字符串无限重定向,因为它会重定向到自身(源和目标都会有尾部斜杠)。因此,我们需要使用条件来进行重写。

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

如何在 nginx 中配置重定向到不带尾部斜杠的 url? 的相关文章

  • MailChimp 取消订阅 URL 中每个参数的用途是什么?

    在以下 URL 中 从列表中取消订阅用户 http xxxxx us2 list manage com unsubscribe u 87f537bccxx35e53a1890e0d9 id 40dcxx6cd6 e c4aaxx1dd6 c
  • 使用 nginx 将 PATCH 请求代理为 POST

    我尝试使用 nginx 将 HTTP PATCH 请求重定向到 HTTP POST 请求 我还尝试了以下配置 但它不起作用 我收到 400 错误请求 http map request method my method default req
  • 如何获取 Flask 中当前的基本 URI? [复制]

    这个问题在这里已经有答案了 在下面的代码中 我想将 URL 存储在变量中以检查发生 URL 错误的错误 app route flights methods GET def get flight flight data mongo db fl
  • GitLab 发布临时 IP 禁令 - 403 禁止

    我的 GitLab 实例设置有时会对我们自己的 IP 地址实施 IP 禁令 导致办公室中的所有用户在任何网页或 git 请求上都会收到 403 Forbidden 该禁令的实施是由于身份验证重复出现错误 这完全是一个单独的问题 但我想防止我
  • Mono 3.0、Ubuntu 12.10、Nginx 和 ServiceStack

    根据 ServiceStack 网站的说法 使用 Mono 在 Linux 上启动和运行 ServiceStack 应该很容易 我已经在系统 Ubuntu 12 10 上安装了 nginx mono 3 0 和 fastcgi 我用过thi
  • HTAccess - 令人困惑的干净网址

    如果我想简单地重定向 clients page to clients php view page我会使用像这样简单的东西 它效果很好 Options FollowSymlinks RewriteEngine on RewriteRule c
  • 带有查询参数的渲染 url

    无法找到简单问题的解决方案 答案应该是显而易见的 如何在 hamlet 模板中使用查询参数渲染 url I e ItemsR 将生成http localhost 3000 items我如何生成类似的东西http localhost 3000
  • 根据查询参数将相同的URL映射到Spring中的不同控制器

    我正在使用基于 spring 注解的控制器 我希望我的 URL user messages 映射到某个控制器 a 如果存在查询参数标记 否则映射到某个不同的控制器 b 这是必需的 因为当存在参数标签时 可以存在更多参数以及我想要在不同控制器
  • Laravel 5 - URL 查询字符串的 NGINX 服务器配置问题

    Laravel 没有从 URL 查询字符串接收任何 GET 变量 GET 和 Input all 为空 Example example app ex login php country US country US 从未出现在我的 GET 变
  • Google 地图 API 标记图标 URL?

    我正在尝试将标记图标更改为 红圈 或 红针 或其他任何内容 在这些代码中 markerOptions icon images beachflag png 标记不显示 但如果我做icon一行注释行 因此标记显示为 red pin icon 所
  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件
  • 在使用 Let's Encrypt 和 Nginx 进行的 SSL Labs 测试中,如何在所有类别中获得 A+ 100 分?

    在 www ssllabs com 测试我的 SSL 证书时 我试图在所有类别上获得 100 分 然而 我正在努力争取所有分数都达到 A 和 100 关于我应该使用什么 NGINX 配置有什么建议吗 或者我应该如何生成 Let s Encr
  • 使用 PM2 将节点作为服务运行 - 连接被拒绝

    我正在关注this https www digitalocean com community tutorials how to set up a node js application for production on ubuntu 16
  • 在同一个 nginx 服务器块上公开多个 api uri

    Goal 我的目标是在同一个 nginx 服务器上设置多个后端 api 容器 http localhost 80 api account gt 调用 http account service 9000 http localhost 80 a
  • Nginx 与 Daphne 给出 502 Bad Gateway

    由于 Django Channels 和 uwsgi 出现问题 我决定用 daphne 替换 uwsgi 关注后this http masnun rocks 2016 11 02 deploying django channels usin
  • NGINX 返回 405 不允许使用 POST 方法

    我有这个default conf server listen 443 ssl root etc nginx json server name myserver com ssl certificate etc ssl certs server
  • PHP-FPM 和 Nginx:502 错误网关

    配置 Ubuntu 服务器 11 10 64 位 亚马逊AWS Ec2 托管在云上 t1 micro实例 在我写任何其他内容之前 我想声明我已经检查了两者nginx 502 错误网关 https stackoverflow com ques
  • Django 检索 GET 列表

    我是 Django 新手 我有一个 URL 列表 例如 example com item test item for test url 我知道如何在视图中检索该值 a request GET getlist item 我的问题是 如何在模板
  • API 端点的 Django 子域配置

    我已经建立了一个 Django 项目 它使用django rest framework提供一些 ReST 功能 网站和其他功能都运行良好 然而有一个小问题 我需要我的 API 端点指向一个不同的子域 例如 当用户访问该网站时 他 她可以根据
  • nginx 重写文件夹重定向

    all 我正在尝试在 nginx 中做一些事情来重定向对文件的所有调用 images 成为 assets images 有人可以帮我重写规则吗 给予 301 永久移动状态 以下是使用较新版本的 Nginx 执行此操作的首选方法 locati

随机推荐

  • 禁用模块时 Magento 错误

    我创建了一个模块 然后使用升级脚本添加多选属性 该属性使用 source 动态获取其值 代码如下 添加属性 installer Mage getResourceModel catalog setup catalog setup instal
  • 如何在 swift 项目中集成 PayUMoney iOS SDK [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我已从 PayUMoney 网站下载 PayUMoney iOS SDK 我现在无法将 SDK 与我的 swift 项目集成 这个答案取自 PayU 文档本身 我在这里回答只是因
  • ng-show 不适用于数据表列

    我正在使用数据表以角度创建一个表 我使用了范围中的一个值 并将该值与收到的数据进行比较 columns data null render function data type row var roleid angular element T
  • 如何在 NuxtJS 中构建 SEO 友好的路线?

    我是 NuxtJS 的新手 我的页面由导航栏 菜单 列出所有文章的博客页面和几个主要是静态的页面组成 就像大多数公司网站一样 我正在从 Strapi API 检索数据 在该 API 中我只能通过 ID 获取单个条目 我必须做什么 当用户单击
  • FxCop:用于检查程序集信息值的自定义规则

    有没有一种相当简单的方法让 FxCop 检查我的所有程序集是否声明了特定的属性值 我想确保每个人都更改了创建项目时的默认设置 assembly AssemblyCompany Microsoft fail assembly Assembly
  • 如何解决我的线性模型上的“秩不足拟合可能会产生误导性错误”?

    当我使用我的模型进行一些预测时遇到问题 R 显示此消息Warning message prediction from a rank deficient fit may be misleading 我该如何解决 我认为我的模型是正确的 但预测
  • 使用 Google Apps 脚本库

    我已阅读所有有关管理和创建库的 Google 文档 但我仍然不知道它们是否适合我要解决的问题 我知道如何保存独立脚本的版本 我知道如何通过脚本编辑器将库添加到电子表格中 但我不明白 非常简单 如何在新电子表格中触发库脚本 我有一个电子表格
  • 从 AJAX 响应动态创建复选框

    我正在创建一个涉及引导程序的网站 并希望在模式对话框中显示复选框 计算机名称 列表以供用户选择 我有一个 AJAX 调用和响应 它返回我想要的信息 但我不知道如何正确显示它 基本上 我收到的返回列表中的每个项目 我想将一个复选框附加到模式中
  • 使用 onclick 选项时,Ajax 无法使用 HTML 表单中的提交按钮

    当我仅使用输入文本字段时 下面的代码有效 但当我使用提交按钮时 它不起作用 我不懂jquery所以请解释一下
  • 如何使用任何 Linux 工具打印 FILENAME 前面的每个文件的第 n(第 5)行?

    所以我的目标是提取目录中每个文件的第五行 我的目录中有一堆扩展名 gjf 文件 第五行始终是 1 0 或 1 1 不带引号 到目前为止 我知道我可以提取这些值 但不能提取附加的文件名 这是我一直在使用的代码 awk FNR 5 gjf 1
  • 使用 s3cmd 将小文件上传到 s3 时出错?

    我遇到一个不寻常的错误 我的文件似乎太小 无法上传到 s3 我有一个未上传的小日志文件 s3cmd put log txt s3 MY BUCKET MY SUB BUCKET ERROR S3 error Access Denied 但是
  • 检查 16 个容器中是否存在值

    我有 16 个线程来计算密钥的哈希值 我试图在线程之间分配工作 因为计算哈希值并检查它是否以线性方式存在只占用了我的 CPU 功率的一小部分 目前 我使用单个映射容器 所有线程都可以使用互斥锁访问该容器 然而 由于实际的散列几乎不需要任何时
  • 如何创建 100 个类型为 &'static str 的不同标签?

    我正在尝试使用创建一个图表RefCell and Rc 我想在带有字符串标签的循环中创建 100 个节点 这是图形表示 struct Node datum static str edges Vec
  • 文件时间戳不随数据更新而改变

    我有一位客户声称他有一个应用程序可以更新日志文件中的某些数据而不更改该日志文件的时间戳 为什么应用程序会有这样的行为 这是 Windows 2008 R2 Windows 7 及更高版本的新功能 修改时间不再像 Windows 2003 中
  • 在 eclipse pmd 插件中添加新的基于 java 的 PMD 规则

    我们如何在 eclipse pmd 插件中添加新的基于 java 的 pmd 规则 我收到以下错误 类实现无效 该类必须位于插件类路径中并实现规则接口 我用 AbstractRule 类扩展了规则类 None
  • 如果 Windows 屏幕保护程序使用 C# 运行,如何关闭它?

    好的 所以我找到了一些code检查屏幕保护程序是否正在运行 如果我愿意的话可以杀死它 这似乎不适用于 Windows 7 PC 有谁知道如何修改此代码 或提供新代码来实现此目的 我的应用程序设计为在后台运行 直到发生特定事件 然后创建并显示
  • 检查单词列表中单词的子字符串匹配

    我想检查一个单词是否在单词列表中 word with word list without bla foo bar I tried if word in set list 但由于以下事实 它没有产生想要的结果in匹配的是字符串而不是项目 也就
  • IAsyncResult 模式的优点是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我觉得有很多课程 例如Tc
  • 有什么办法可以把我的钩子放到 github 仓库上吗?

    我可以实现它 以便在从 github 拉取存储库后 挂钩已存在于 git hooks目录 不直接 因为这会带来安全风险 你不知道那些钩子脚本在做什么 您可以尝试 对代表 git 存储库中的钩子的文件 或多个文件 进行版本控制 版本a git
  • 如何在 nginx 中配置重定向到不带尾部斜杠的 url?

    我想将带斜杠的 URL 重定向到不带尾部斜杠的路径 因此 some url 到 some url 会出现重复内容问题 其余的 URL 例如 some url xml some url some url some url q v some u