Apache-2.2
Apache 重定向 - 刪除所有查詢
我正在嘗試刪除 URL 中的所有查詢:
https://api.myserver.com/image.png?arg=0
應該成為https://api.myserver.com/image.png
我用這個:
RewriteCond %{QUERY_STRING} ^arg=0$ RewriteRule (.*) $1? [R=permanent]
這是結果:
https://api.myserver.com/home/usrn32/domains/myserver.com/public_html/image.png
所以參數被刪除,但路徑是絕對的而不是相對的。另外,我想擷取所有
arg
數字,而不僅僅是0
.如何?
看起來這是在目錄上下文中。在這種情況下,
$1
反向引用不包含斜杠前綴(因為RewriteRule
模式匹配的 URL 路徑不包含斜杠前綴),因此它被視為相對路徑替換。當它是relative時, mod_rewrite 將目錄前綴(即/home/usrn32/domains/myserver.com/public_html/
)添加到替換中。您需要在susbtitution上顯式包含斜杠前綴(或使用
RewriteBase
指令),以便它不再是relative。例如:RewriteRule (.*) /$1? [R=permanent,L]
此外,您可能希望包含該
L
標誌,以防止進一步重寫(如果有的話)。另外,我想擷取所有 arg 數字,而不僅僅是 0。
將您的CondPattern (
^arg=0$
)修改為^arg=\d+$
(1 位或更多位)。總之:
RewriteCond %{QUERY_STRING} ^arg=\d+$ RewriteRule (.*) /$1? [R=permanent,L]
刪除所有查詢
如果您確實想刪除所有查詢字元串參數,那麼您可以將CondPattern更改為僅一個點(即。
.
)以匹配任何字元。