我相对较新的离子重写过滤器,我试图配置我的规则集,以允许我的应用程序的其他动态规则。我目前为我的应用程序的商店部分定义了以下规则。
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
我需要做些什么来增加额外费用?被引用
任何帮助非常感谢
答案 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次。