1

私はイオンリライトフィルターに比較的慣れておらず、アプリに追加の動的ルールを許可するようにルールセットを構成しようとしています。現在、アプリケーションのショップ部分に次のルールを定義しています。

RewriteRule ^/shop/(.*)/pages/(.*) /index.cfm?go=shop.products&content=$1&CurrentPage=$2 
RewriteRule ^/shop/(.*)/pages/(.*)/ /index.cfm?go=shop.products&content=$1&CurrentPage=$2 

RewriteRule ^/shop/(.*)$ /index.cfm?go=shop.products&content=$1 
RewriteRule ^/shop /index.cfm?go=shop.products 
RewriteRule ^/products.cfm  /index.cfm?go=shop.products 
RewriteRule ^/details.cfm   /index.cfm?go=shop.products 

サービス プロバイダーは、先頭に & 記号を付けない限り、追加の追跡変数を渡すことを許可しないと言っています。

URL は以下のようになります。

www.domainname.com/shop/category-of-products 
www.dimainname.com/shop/ 

追加の変数を使用して、次のようにする必要があります

www.domainname.com/shop/category-of-products&additional-query-strings 
www.dimainname.com/shop/&additional-query-strings 

彼らがしなければならないことは

www.domainname.com/shop/category-of-products?additional-query-strings 
www.dimainname.com/shop/?additional-query-strings 

追加を許可するために何をする必要がありますか? 参照される

どんな助けでも大歓迎です

4

2 に答える 2

0

リライトの正規表現を変更して、オプションで任意のクエリ文字列パラメーターを許可することができます。

例えば:

RewriteRule ^/shop/(.*)$ /index.cfm?go=shop.products&content=$1

になる

RewriteRule ^/shop/(.*)(\?.*)?$ /index.cfm?go=shop.products&content=$1

この追加(\?.*)?は、式を疑問符とそれに続くすべてのものに 0 回または 1 回一致させます。

今はテストできませんが?、星の後にa を追加して、最初に一致するグループを非貪欲にする必要があるかもしれません。

RewriteRule ^/shop/(.*?)(\?.*)?$ /index.cfm?go=shop.products&content=$1

ちなみに、これは正規表現に 3 つの疑問符を追加します。それぞれに異なる意味があります。前の演算子を非貪欲にし、文字どおりの疑問符に一致させ、前の式に 0 回または 1 回一致させます。

于 2013-10-02T19:46:54.660 に答える
0

$args 変数を利用できる場合があります。

&$args を追加してみてください。書き換えられた URL の最後に。? 最後に、Nginx がクエリ文字列を自動的に再度追加しないようにします。

例えば

RewriteRule ^/shop/(.*)$ /index.cfm?go=shop.products&content=$1&$args?
于 2013-04-13T21:43:51.470 に答える