在条件下使用htaccess添加参数

时间:2014-04-01 05:33:13

标签: apache .htaccess parameters rewrite

对熟悉Apache规则的人来说,这很简单。

情况

使用支付宝作为支付平台,返回网址不能包含您自己的任何网址参数(无论是GET还是POST)。但是,我使用的是Joomla,特别是Akeeba订阅。此组件需要URL中的参数符合相关支付平台。

我希望在点击返回页面时检测(通过支付宝的一个网址参数)并添加额外的参数。

示例(域和页面编辑)

http://...?
    currency=HKD&
    total_fee=2.00&
    out_trade_no=211&
    trade_no=2014040100276615&
    trade_status=TRADE_FINISHED

期望的结果

http://...?
    currency=HKD&
    total_fee=2.00&
    out_trade_no=211&
    trade_no=2014040100276615&
    trade_status=TRADE_FINISHED&
    paymentmethod=alipay

简单添加& paymentmethod =支付宝

问题

我似乎无法让Apache接受规则;到目前为止,这里有几次尝试。请注意,我绝对可以使用.htaccess,不需要更改RewriteBase。

-- Attempt 1 --
RewriteCond %{QUERY_STRING} out_trade_no=
RewriteRule ^out_trade_no paymentmethod=alipay&out_trade_no [R,L,QSA]

-- Attempt 2 --
RewriteCond %{QUERY_STRING} (^|&)out_trade_no=(&|$) [NC]
RewriteRule ^ %{REQUEST_URI}&paymentmethod=alipay [L,R=301,QSA]

进度

结合这两个,我已经取得了进展但是,现在似乎有Rewrite部分垃圾邮件“paymentmethod = alipay”,这似乎会导致错误。

RewriteCond %{QUERY_STRING} out_trade_no=
RewriteCond %{QUERY_STRING} !paymentmethod=
RewriteRule ^ %{REQUEST_URI}&paymentmethod=alipay [R,L]

现在获得一个重定向链,直到它自动停止在重定向限制

1 个答案:

答案 0 :(得分:0)

如果您只是尝试将该URL中的查询字符串与该重写匹配,则需要匹配第一个(currency)。哪个是最简单的。

试试这个。它将发送您想要的所有参数。

RewriteCond %{QUERY_STRING} ^\bcurrency=
RewriteRule ^(.*)$ /$1?paymentmethod=alipay [R,QSA,L]