我想优化旧的 Magento 商店系统的链接结构。到现在为止,在生成静态页面的时候,都会在对应的路径中添加一个.html后缀。由于较早的问题,甚至存在带有双后缀的路径(例如 .html.html)。现在我已禁用后缀并从数据库中删除了所有带有双后缀的路径,我想设置从旧 URL 到新 URL 的自动重定向。
为了保留现有的超链接和搜索引擎条目,我希望 Nginx 将对带有 .html 或 .html.html 后缀的页面的所有请求重定向到新路径。
要求:
example.org/banana.html
example.org/banana.html.html
应该重定向到:
example.org/banana
所以实际上我最好的猜测是:
location / {
rewrite ^(.*?)\.html(\.html)?$ $1 permanent;
try_files $uri $uri.html $uri.html.html $uri/ =404;
}
如何达到我的目标以及我需要将哪些重写规则添加到 nginx 配置中?
仅在块
try_files
内使用一个语句。location
可以根据需要添加文件条款。包括一个$uri
术语来匹配那些直接匹配静态文件的 URI(例如.css
和.js
)。$uri/
如果要使用该index
指令,请包含一个术语。例如:
有关详细信息,请参阅此文档。
这些
rewrite
语句是错误的,因为第一个总是匹配用于第二个的 URI。此外,重写正在捕获变量中的前导,因此通过使用/
您正在添加额外的前导。$1
/$1
/
您还可以将两个正则表达式组合成一个语句,例如: