2012-10-25 85 views
0

所有,國防部重寫QUERY_STRING問題

我重定向的URL的一些特定的查詢字符串新的一頁。例如需要重定向到http://ww2.newtestserver.com/xyz.html

爲此我寫了以下的重定向http://testserver.xyz.com/abc/content/content.jsp?contentId=123http://testserver.xyz.com/abc/content/content.jsp?contentId=345

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

我不想要這個。我怎麼能防止這個,使我的國防部重寫只查詢查詢字符串123或345或567,但不是123x或345x或678x?

請幫

TIA

回答

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] 
+0

謝謝...它的工作! – user1633800