Apache-2.2
RedirectMatch 和查詢字元串
比較這兩個
RedirectMatch
。第一個不起作用:RedirectMatch 302 ^/redirect\.php[?]page=(.+)$ http://somewhereelse.com/$1
與此相反,它將重定向到
http://somewhereelse.com/?page=wherever
:RedirectMatch 302 ^/redirect\.php([?]page=.+)?$ http://somewhereelse.com/$1
RedirectMatch
只匹配 URI 而不是查詢字元串?Apache 的文件在這方面有點模糊。我要做的是提取page
查詢參數並使用它重定向到另一個站點。有可能
RedirectMatch
還是我必須使用RewriteCond
+RewriteRule
?
RedirectMatch
不幸的是,在這種情況下無法使用;查詢字元串不是與之RewriteMatch
比較的 URL 字元串的一部分。第二個範例有效,因為客戶端發送的查詢字元串被重新附加到目標 URL - 因此可選匹配不匹配任何內容,
$1
替換為空字元串,但隨後客戶端的原始查詢字元串被卡住。相反,將需要進行檢查
RewriteCond
。%{QUERY_STRING}
RewriteCond %{QUERY_STRING} page=([^&]+) RewriteRule ^/redirect\.php$ http://somewhereelse.com/%1? [R=302,L]