【发布时间】:2017-06-04 05:07:55
【问题描述】:
我需要为我的 Magento 1 商店实现以下重写规则 - 如果查询字符串包含 param1 或 param2 并且 URI 不是 /myfilter/,则删除它。
这是一个例子:
www.mystore.com/myfilter/ --> www.mystore.com/myfilter/
www.mystore.com/myfilter/?param1=1 --> www.mystore.com/myfilter/param1=1
www.mystore.com/<something>/?param1=1 --> www.mystore.com/<something>/
www.mystore.com/<something>/?param2=2 --> www.mystore.com/<something>/
我在 .htaccess 中添加了以下内容:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/myfilter/?
RewriteCond %{QUERY_STRING} param1 [OR]
RewriteCond %{QUERY_STRING} param2
RewriteRule (.*) /$1? [R=301,L]
在标准 Magento 重定向之前:
############################################
## always send 404 on missing files in these folders
RewriteCond %{REQUEST_URI} !^/(media|skin|js)/
############################################
## never rewrite for existing files, directories and links
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
############################################
## rewrite everything else to index.php
RewriteRule .* index.php [L]
但它的工作方式错误。 这些 URL 有效:
www.mystore.com/myfilter/ --> www.mystore.com/myfilter/
www.mystore.com/myfilter/?param3=1 --> www.mystore.com/myfilter/?param3=1
www.mystore.com/<something>/?param1=1 --> www.mystore.com/<something>/
www.mystore.com/<something>/?param2=2 --> www.mystore.com/<something>/
但是当 URI 包含 /myfilter/ 和 param1 或 param2 时,它会将我重定向到 /index.php:
www.mystore.com/myfilter/?param1=1 --> www.mystore.com/index.php
我错过了什么吗?
【问题讨论】:
-
也尝试发布关于服务器故障的问题。
-
@M.Gara 这不是关于服务器故障的主题。查看Server Fault的How to Ask。
-
这不是服务器故障,我可以在不同的服务器上看到相同的行为,包括我的本地 apache。这与 Magento 的重写和 apache 有关。
-
@theProgrammer101,我不完全确定你认为什么是不完整/无法验证的?
-
已解决并使用解决方案更新问题:)