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 に答える