Ionics Isapi重写过滤器 - 特殊规则?在网址中

时间:2013-04-13 02:59:23

标签: rewrite iirf

我相对较新的离子重写过滤器,我试图配置我的规则集,以允许我的应用程序的其他动态规则。我目前为我的应用程序的商店部分定义了以下规则。

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 

服务提供商表示我们不允许传入额外的跟踪变量,除非他们在前面加上&符号。

网址如下所示。

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 

我需要做些什么来增加额外费用?被引用

任何帮助非常感谢

2 个答案:

答案 0 :(得分:0)

您可以利用$ args变量。

尝试添加& $ args?在您重写的URL的末尾。的?最后确保Nginx不会再自动添加查询字符串。

e.g。

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

答案 1 :(得分:0)

您可以尝试更改重写的正则表达式,以允许任何查询字符串参数。

例如:

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

变为

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

附加(\?.*)?使表达式匹配问号以及随后的所有内容为0或一次。

我现在无法测试它,但我认为您甚至可能需要通过在明星之后添加?来使第一个匹配组非贪婪:

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

顺便说一句:这会给你的正则表达式添加三个问号,每个问号都有不同的含义 - 使前面的操作符不贪婪,匹配文字问号,并匹配前面的表达式0或1次。