【问题标题】:Append extra get variable to URL via .htaccess通过 .htaccess 将额外的 get 变量附加到 URL
【发布时间】:2017-04-08 00:28:43
【问题描述】:

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

当我搜索产品时,它只搜索标题。有一个用于搜索描述的复选框,但默认情况下设置为“关闭”,我无法在代码中找到将其附加或更改为 URL 的任何位置。只需将&description=true 添加到 URL 的末尾即可。

我有:

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

【问题讨论】:

    标签: php regex .htaccess mod-rewrite opencart


    【解决方案1】:

    您无法匹配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 附加现有查询字符串。

    参考资料:

    【讨论】:

    • 我不知道它是什么意思,但它有效,谢谢,如果您不介意,请详细说明它的作用和工作原理。
    • 我在参考链接中添加了一些解释。
    • 你好。我想实现几乎相同的目标。但不工作。你能在这里回答我的问题吗wordpress.stackexchange.com/questions/386684/…
    • 该问题属于 SO,因为它不是 Wordpress 问题,而是通用重写问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2021-03-29
    • 2018-07-20
    • 1970-01-01
    相关资源
    最近更新 更多