簡體   English   中英

301根查詢字符串重定向?

[英]301 Redirect for Query String on Root?

我嘗試了多種方法來嘗試重定向根目錄上帶有查詢字符串的某些URL,例如,如果我嘗試匹配URL http://example.com/?bloginfo=racing

Redirect 301 "/?bloginfo=racing" http://example.com/racing

要么

RedirectMatch 301 ^/?bloginfo=racing$ http://example.com/racing

條件將永遠不匹配。 在我的.htaccess文件中是否有很好的方法可以編寫這種重定向?

如果要匹配查詢字符串,則需要使用mod_rewrite並在RewriteCond指令中檢查QUERY_STRING服務器變量。 mod_alias指令(即RedirectRedirectMatch僅匹配URL路徑,而不匹配查詢字符串)。

例如,要將http://example.com/?bloginfo=racing重定向到http://example.com/racing您可以執行以下操作:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^bloginfo=racing$
RewriteRule ^$ /racing? [R=302,L]

尾隨? 為了從請求中刪除查詢字符串,必須使用替換上的,否則會將其傳遞到目標URL。 或者,在Apache 2.4+上使用QSD標志

如果打算將其從302(臨時)更改為301(永久),並且僅在您確定其工作正常(避免緩存問題)時更改為301(永久)。

要使其更通用,並將/?bloginfo=<something>重定向到/<something>則可以執行以下操作:

RewriteCond %{QUERY_STRING} ^bloginfo=([^&]+)
RewriteRule ^$ /%1? [R=302,L]

%1是對最后一個匹配CondPattern中捕獲的子模式的反向引用。

查詢字符串是與請求URI分開的變量,因此您必須執行以下操作:

RewriteEngine On
RewriteCond %{QUERY_STRING} bloginfo=racing 
RewriteRule ^$ /racing [L,R]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM