nginx - nginx - 重定向到不带扩展名的 url 并在末尾添加斜杠
问题描述
使用 nginx,我想将所有静态 html URL(mydomain.com/index.html;mydomain.com/contact.html;mydomain.com/about.html)重定向到相同的 url,不带扩展名,但在结尾。
结束网址应该是这样的:
mydomain.com/index/
mydomain.com/contact/
mydomain.com/about/ ....
我怎样才能做到这一点?谢谢。
解决方案
这个问题有两个部分。首先是如何让服务器contact.html
响应URI返回/contact/
。
有多种方法可以实现这一目标。例如:
location / {
try_files $uri @rewrite;
}
location @rewrite {
rewrite ^(/.+)/$ $1.html last;
return 404;
}
任何以 a 结尾的 URI/
都将在内部映射到由/
替换的相同 URI .html
。
第二部分是如果人们仍在.html
使用旧方案访问 URI,您可能希望从外部将他们重定向到新方案。
在不创建重定向循环的情况下实现此目的的最佳方法是检查存储在$request_uri
. 例如:
if ($request_uri ~* "\.html(?|$)") {
rewrite ^(.*)\.html $1/ permanent;
}
推荐阅读
- database - 以普通用户身份连接而不授予权限时在 Oracle 数据库中收集 dba_users 信息
- asp.net-core - 如何在不破坏 SOLID 的情况下从不同类型的表中获取记录
- jakarta-ee - 无法使 WebSockets 在 Payara 5.1 中工作
- git - 尝试提出 gerrit 时出现错误“无效的提交者”
- android - 使用 WorkManager 排队工作时出现 IllegalAccessException
- java - 如何使用 ObjectOutputStream 和 ObjectInputStream 在 Java 中处理夏令时?
- vscode-settings - 如何在vscode中查看白色箭头代替空白
- php - 单击的行会根据 sql 更改内容
- r - 如何有效地在 ggplot 中按比例重新排序因子?
- javascript - 在 for 循环 JavaScript 中,每 10 个 td 后换行