0

全て、

特定のクエリ文字列を含むいくつかの URL を新しいページにリダイレクトしています。たとえば、http://testserver.xyz.com/abc/content/content.jsp?contentId=123またはhttp://testserver.xyz.com/abc/content/content.jsp?contentId=345にリダイレクトする必要がありますhttp://ww2.newtestserver.com/xyz.html

この目的のために、私は次のリダイレクトを書きました:

RewriteCond %{QUERY_STRING} contentId=123 [OR]
RewriteCond %{QUERY_STRING} contentId=345 [OR] 
RewriteCond %{QUERY_STRING} contentId=678 
RewriteRule ^/(.*)$ http://ww2.newtestserver.com/xyz.html/? [R=301,L]

ブラウザに入力する場合を除いて、これは正常に機能しhttp://testserver.xyz.com/abc/content/content.jsp?contentId=1234ます。これも にリダイレクトされhttp://ww2.newtestserver.com/xyz.htmlます。

これいらない。mod リライトがクエリ文字列 123、345、または 567 のみを参照し、123x、345x、または 678x を参照しないようにするにはどうすればよいですか?

助けてください

ティア

4

1 に答える 1

0

リライトが指定した正確なクエリ文字列のみを確認するようにするには、 および を使用して、それらが完全なクエリ文字列であることを伝える必要があります。文字列の先頭と一致し、末尾と一致します。^$^$

RewriteCond %{QUERY_STRING} ^contentId=123$ [OR]
RewriteCond %{QUERY_STRING} ^contentId=345$ [OR]
RewriteCond %{QUERY_STRING} ^contentId=678$
RewriteRule ^/(.*)$ http://ww2.newtestserver.com/xyz.html [R=301,L]

上記のコードは機能します。以下のコードは機能する可能性があります (より効率的である必要があります) が、現在テストできるコンピューターがありません。

RewriteCond %{QUERY_STRING} ^contentId=(123|345|678)$
RewriteRule ^/(.*)$ http://ww2.newtestserver.com/xyz.html [R=301,L]
于 2012-10-27T07:26:50.400 に答える