【发布时间】:2023-03-25 07:54:01
【问题描述】:
所有, 我是 nginx 和服务器的新手,我无法处理 nginx 重写规则。我想小写所有网址并删除一些字符串。 我有一个电子商务网站,当前的 URL 结构是这样的:(为了避免被 stackoverflow 识别为链接,我特意在 http 和 : 之间添加了一个空格)
product page: http ://www.example.com/Some-Product-pd123456.html
product category: http ://www.example.com/Product-Cat-pl12345.html
page a: http ://www.example.com/About-Us.html
page b: http ://www.example.com/Contactus.html
所以,我想要实现的是这些:
product page: https ://www.example.com/product/some-product/
product category: https ://www.example.com/category/product-cat/
page a: https ://www.example.com/about-us/
page b: https ://www.example.com/contact-us/
请注意,我的网站将从 http 转到 https,并且我有多个页面,如页面 a(相同模式)和多个页面,如页面 b(无模式)。这些是到目前为止我所做的:
//product
location ~ ^http:\/\/www\.example\.com\/(.*)-pd\d{6}\.html$ {
return 301 https://www.example.com/product/$1/;
}
//product category
location ~ ^http:\/\/www\.example\.com\/(.*)-pl\d{5}\.html$ {
return 301 https://www.example.com/category/$1/;
}
//Page a
location ~ ^http:\/\/www\.example\.com\/(.*)\.html$ {
return 301 https://www.example.com/$1/;
}
//Page b
location ~ ^http:\/\/www\.example\.com\/Contactus\.html$ {
return 301 https://www.example.com/contact-us/;
}
所以我的问题是如何首先将 url 小写,然后在它们正确的情况下应用上述规则,或者将它们更好地和有效地组合在一起,以获得更好的网站速度?位置顺序重要吗?感谢您的帮助。
【问题讨论】:
-
http:不是location和rewrite指令使用的规范化 URI 的一部分(您不需要转义/字符)。您是否考虑过用location ~*忽略大小写?详情请见this document。 -
嗨,Richard,感谢您的更正,您提供的链接对我有很大帮助。我终于找到了解决方案,我将其作为答案发布。
标签: nginx url-rewriting nginx-location