的RewriteCond匹配我必須做一個重定向到另一主機,如果特定參數/值對是在查詢字符串。對於某些查詢參數/值對
到目前爲止,我有
,對於工作:
/index.php?id=95&abc=23
/index.php?abc=23&id=95
/index.php?id=95&abc=23&bla=123
,但它也符合/index.php?id=95&abc=234
例如。
我需要準確abc=23
,匹配不管它在哪裏發生的模式。
對此有何建議? :-)
的RewriteCond匹配我必須做一個重定向到另一主機,如果特定參數/值對是在查詢字符串。對於某些查詢參數/值對
到目前爲止,我有
,對於工作:
/index.php?id=95&abc=23
/index.php?abc=23&id=95
/index.php?id=95&abc=23&bla=123
,但它也符合/index.php?id=95&abc=234
例如。
我需要準確abc=23
,匹配不管它在哪裏發生的模式。
對此有何建議? :-)
我想試試這個正則表達式(&|^)abc=23(&|$)
並且匹配僅針對%{QUERY_STRING}
。
RewriteCond %{REQUEST_URI}?%{QUERY_STRING} [&\?]abc=23&?
您與字符串不受約束的其餘符合ABC = 23 &或ABC = 23,ABC = 234是一個有效的匹配。你真正想要的是&或沒有別的。我不知道這正則表達式是合法的阿帕奇,但它會被寫爲:
RewriteCond %{REQUEST_URI}?%{QUERY_STRING} [&\?]abc=23(&|$)
下面是我在favourite online RegExp tester使用的測試案例:
abc=23&def=123
abc=234
abc=23
謝謝,我知道的問號使得前面的標記可選。我確實添加了它,因爲否則它不會匹配的index.php?ID = 95&ABC = 23 – Alex 2009-10-09 08:31:24
哦,我看到盧卡斯已經寫了(如果有一個「&」後23將只匹配)。嗯,需要輸入更快。 – Andrew 2009-10-09 08:39:29
順便說一句,有沒有必要逃避'?'一個字符類中。 '[&?]'是完全有效的,並且匹配一個&符號或一個問號。 – davidchambers 2010-09-15 10:18:20
謝謝你,完全適用於我! :-) – Alex 2009-10-09 08:31:58