2016-11-28 7 views
1

すべて、 私はnginxとサーバーに新しいです、私はnginx書き換えルールに対処するのに問題があります。私はすべてのURLを小文字にして文字列を削除したい。 I eコマースウェブサイトを持って、現在のURL構造はこれらのようなものです:私が達成したいものをそうNginxリライト(小文字と部分文字列)

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 

、(目的に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に行くだろう、と私はページのような複数のページ(同じパターン)とページ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を小文字、その後、それらが正しい場合には、これらの上記の規則を適用する、またはそれ以上うまくかつ効率的にそれらを一緒に取得する方法です?ロケーションの順序は重要ですか?助けてくれてありがとう。

+0

'http:'は 'location'と' rewrite'ディレクティブで使用される正規化されたURIの一部ではありません( '/'文字をエスケープする必要はありません)。代わりに 'location〜* 'で大文字小文字を無視することを考えましたか?詳細については、[このドキュメント](http://nginx.org/en/docs/http/ngx_http_core_module.html#location)を参照してください。 –

+0

こんにちは、リチャード、あなたの訂正に感謝し、あなたが提供したリンクが私を助けます。私は最終的に解決策を見つけました。答えとして投稿します。 – davidchannal

答えて

0

ここに私自身の質問に答えます。
大文字小文字のURLを使用するには、perlを使用する方法があります。 、そして、https://stackoverflow.com/a/11170826/7218247

例として、製品ページを取り、ここに私のコードは、サーバブロックである: は、この答えをチェックしてください

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

、あなたは正規表現で{}を持っている場合、あなたは二重引用符を必要とします外側。

関連する問題