通过.htaccess

时间:2016-11-23 20:48:19

标签: php regex .htaccess mod-rewrite opencart

我正在尝试将额外的get变量附加到网址上。我目前正在使用我购买的自定义主题的OpenCart。但是,该主题的开发人员一直没有反应。

当我搜索产品时,它只搜索标题。有一个复选框来搜索描述,但这被设置为" off"默认情况下,我无法在代码中的任何位置找到要添加或更改为URL的内容。这是将&description=true添加到网址末尾的问题。

我有:

index.php?route=product/search&search=123 

...我需要将描述附加到此,使其看起来像:

index.php?route=product/search&search=123&description=true

我的最后一招是修改.htaccess,所以我可以劫持搜索请求,并将其修改到最后。

我曾尝试过写一些,但无济于事。

RewriteRule ^/page /page?var=val [QSA]

我似乎无法确定我是如何写这个的,以便它能够工作。有人可以指出我正确的方向吗?

编辑 - 仍在弄乱,现在我有:

RewriteRule index.php?route=product/search&search=(.*)  /index.php?route=product/search&search=$1&description=true [QSA]

它不会将其附加到原始文件中,但是当我手动添加&description=true时,会添加另一个吗?所以它变成了:

index.php?route=product/search&search=123&description=true&description=true

1 个答案:

答案 0 :(得分:2)

您无法匹配RewriteRule中的查询字符串。像这样使用RewriteCond

RewriteEngine On

RewriteCond %{QUERY_STRING} ^route=product/search&search=[^&]+$ [NC]
RewriteRule ^index\.php$ /$0?description=true [QSA,L,NC,NE,R=302]

RewriteCond %{QUERY_STRING}检查您的查询字符串。在目标中,我们使用新参数description=trueQSA附加现有查询字符串。

参考文献: