我想删除一个查询字符串,但仅针对下面的6个案例,绝不会删除任何子文件夹/其他网址。
http://www.example.com/?___store=de&___from_store=de
http://www.example.com/?___store=de&___from_store=en
http://www.example.com/en/?___store=de&___from_store=en
http://www.example.com/en/?___store=de&___from_store=en
http://www.example.com/en/?___from_store=en
https//www.example.com/en/?___from_store=de
这就是我已经得到的。它正在运行,但会从所有网址中删除查询字符串,这是我不想要的。
RewriteCond %{QUERY_STRING} /?___store=de&___from_store=de
RewriteRule ^(.*)$ /$1? [L,R=301]
RewriteCond %{QUERY_STRING} /?___from_store=de
RewriteRule ^(.*)$ /$1? [L,R=301]
RewriteCond %{QUERY_STRING} /?___store=de&___from_store=en
RewriteRule ^(.*)$ /$1? [L,R=301]
RewriteCond %{QUERY_STRING} /?___from_store=en
RewriteRule ^(.*)$ /$1? [L,R=301]
我需要Magento商店的这个特定重写规则。此扩展程序删除了默认商店的商店视图代码:Knectar/Magento-Store-Codes,另请参阅:Magento remove store code for default store view。 因此,___ store查询参数将添加到URL中,但仅限于root。
我的上述解决方案不起作用,因为当涉及到产品/类别时,语言切换不再正常工作(并且不需要删除字符串,因为它被Magento本身剥离了。)
答案 0 :(得分:1)
尝试以下方法:
RewriteCond %{QUERY_STRING} ^___store=de&___from_store=(en|de)$ [NC]
RewriteRule ^(en/?)?$ $1? [R=301,L,NC]
RewriteCond %{QUERY_STRING} ^___from_store=(en|de)$ [NC]
RewriteRule ^en/?$ $0? [R=301,L,NC]