Nginx重写(小写和子字符串)

Nginx重写(小写和子字符串),nginx,url-rewriting,nginx-location,Nginx,Url Rewriting,Nginx Location,全部,, 我不熟悉nginx和服务器,在处理nginx重写规则时遇到问题。我想将所有URL小写并删除一些字符串。 我有一个电子商务网站,当前的URL结构如下:(为了避免被stackoverflow识别为链接,我特意在http和:之间添加了一个空格) 因此,我想实现以下目标: product page: https ://www.example.com/product/some-product/ product category: https ://www.example.com/category

全部,, 我不熟悉nginx和服务器,在处理nginx重写规则时遇到问题。我想将所有URL小写并删除一些字符串。 我有一个电子商务网站,当前的URL结构如下:(为了避免被stackoverflow识别为链接,我特意在http和:之间添加了一个空格)

因此,我想实现以下目标:

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小写,然后应用上述规则(如果它们是正确的),或者将它们更好、更有效地组合在一起,以提高网站速度?位置顺序重要吗?谢谢你的帮助。

我在这里回答我自己的问题。
为了降低url的大小写,一种方法是使用perl。 看看这个答案:

然后,以产品页面为例,下面是我在服务器块中的代码:

location ~* "/(.*)-pd\d{6}\.html$" {
        return 301 http://www.example.com/product/$1/;
}

注意,如果正则表达式中有{},则需要在外部加双引号。

我在这里回答我自己的问题。
为了降低url的大小写,一种方法是使用perl。 看看这个答案:

然后,以产品页面为例,下面是我在服务器块中的代码:

location ~* "/(.*)-pd\d{6}\.html$" {
        return 301 http://www.example.com/product/$1/;
}

注意,如果正则表达式中有{},则需要在其外部加双引号。

http:不是
location
rewrite
指令使用的规范化URI的一部分(并且不需要转义
/
字符)。您是否考虑过忽略带有
location~*
的案例?有关详细信息,请参阅。嗨,Richard,谢谢你的更正,你提供的链接对我帮助很大。我终于找到了一个解决方案,我将把它作为一个答案发布。
http:
不是
location
rewrite
指令使用的标准化URI的一部分(您不需要转义
/
字符)。您是否考虑过忽略带有
location~*
的案例?有关详细信息,请参阅。嗨,Richard,谢谢你的更正,你提供的链接对我帮助很大。我终于找到了一个解决方案,我将把它作为答案发布。