0

已经在这里待了几个小时了。

我需要重定向

http://www.mywebsite.com/index.php?option=com_acctexp&task=paypal_subscriptionnotification&Itemid=

http://www.mywebsite.com/dir/lib/ipn.php

到目前为止,我已经尝试了各种这样的组合:

RewriteCond %{QUERY_STRING} ^option=com_acctexp&task=paypal_subscriptionnotification&Itemid=$
RewriteRule ^(.*)$ /dir/lib/ipn.php [L]

[L] 也已被 [R=301,L] 替换,但收效甚微

我在黑暗中有些跌跌撞撞,因为我完全不知道自己在做什么。我已经阅读了 Apache 文档,但它对我来说很神秘。我不想保留查询字符串,但是我想保留用 ipn 发送的 json 数据。

4

1 回答 1

0

$模式末尾的 意味着它必须是完全匹配的 - 查询字符串必须以 结尾,=附加一个itemid值将导致匹配失败。要传递请求,您不想执行 301 重定向,这将导致新请求。要删除查询字符串并防止循环,请将 a 添加?到重写的末尾。

RewriteBase /
RewriteCond %{QUERY_STRING} ^option=com_acctexp&task=paypal_subscriptionnotification&Itemid=([^&]+?)
RewriteRule (.*) /dir/lib/ipn.php? [L]

在http://htaccess.madewithlove.be/上测试

Input: http://www.example.com?option=com_acctexp&task=paypal_subscriptionnotification&Itemid=123

1  RewriteBase /    
2  RewriteCond %{QUERY_STRING} ^option=com_acctexp&task=paypal_subscriptionnotification&Itemid=([^&]+?)
   This condition was met
3  RewriteRule (.*) /dir/lib/ipn.php? [L]
   This rule was met, the new url is http://www.example.com/dir/lib/ipn.php

   The tests are stopped because the L in your RewriteRule options

Output: http://www.example.com/dir/lib/ipn.php
于 2013-05-29T01:16:51.390 回答