1

このフォームのクエリがサーバーに送信されます。

http://my.host.com/moo?p=1&s=2&targetURL=http://foo.com/sub/more/query

私がする必要があるのは、このクエリのパラメータの一部を置き換えることです。具体的には、で置き換える必要があり、このクエリの他のすべてのパラメータを保持し、のパラメータも保持しhttp://foo.com/sub/ます。私はそれを置き換えるだけで満足するので、これを試しました:http://bar.com/http://foo.com/sub/more/querytargetURL

RewriteCond %{REQUEST_URI} ^/moo
RewriteRule ^/moo(.*)targetURL=http://foo.com/sub(.*)$ http://other.host.com/moo$1targetURL=http://bar.com$2 [L,R]
RewriteRule ^/moo(.*)$ http://other.host.com/moo$1 [L,R]

しかし、最初のクエリは決して一致しません。何か助けはありますか?

編集:明確にするために、私はこれを持っています:

http://my.host.com/moo?p=1&s=2&targetURL=http://foo.com/sub/more/query

そして私はそれをこれにしたいと思います:

http://other.host.com/moo?p=1&s=2&targetURL=http://bar.com/more/query
4

2 に答える 2

1

これを試して:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^my\.host\.com [NC]
RewriteCond %{QUERY_STRING} ^(.*)targetURL=http://foo.com/sub/(.*)$ 
RewriteRule ^/?moo$ http://other.host.com/moo?%1targetURL=http://bar.com/%2 [L,R=301]

を使用して、変数targetURL=http://foo.com/sub/内からパーツを一致させる必要があります。クエリ文字列と一致する場合、クエリ文字列はURIの一部ではありません。次に、および逆参照を使用して、クエリ文字列で一致するグループを参照できます。%{QUERY_STRING}RewriteCondRewriteRule%1%2

于 2012-08-13T20:00:13.960 に答える
1

私がテストして私のために働くこのバージョンを試してみてください。

<i> 

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^my\.host\.com/moo [NC,OR]
    RewriteCond %{QUERY_STRING} ^p\=1\&s=2\&targetURL\=http\:\/\/foo.com/sub/more/query$ [NC,OR]  
    RewriteRule ^/(.*) http://other.host.com/moo?p=1&s=2&targetURL=http://bar.com/more/query/$1 [R=301,L]
  </IfModule>

于 2012-08-13T16:17:18.620 に答える