我想問是否可以重定向
example.com/something?query=hell
到
example.com/something/hell
在 htaccess 的幫助下。我想對我通過GET方法傳遞的所有查詢執行此操作。有沒有人有任何想法?
uj5u.com熱心網友回復:
您可以在 htaccess 中使用以下規則執行此操作
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/] )/?$ /something?query=$1 [L]
使用上述規則,您只需example.com/foobar在瀏覽器中鍵入即可訪問該頁面example.com/something?query=foobar。
uj5u.com熱心網友回復:
要“重定向”/something?query=hell給/something/hell您,可以使用 mod_rewrite 執行以下操作:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^query=([^&]*)
RewriteRule ^something$ /$0/%1 [QSD,R=302,L]
該RewriteRule 模式僅與 URL 路徑匹配。您需要一個與服務器變數匹配的附加條件QUERY_STRING才能匹配查詢字串。
該$0反向參考包含的URL路徑“東西”和%1包含的值queryURL引數,如。“地獄”,(在前面的CondPattern 中捕獲)。
請注意,queryURL 引數必須出現在查詢字串的開頭,如您的示例所示。
該QSD標志是丟棄查詢字串所必需的。
但是,如果您稍后將 URL 重寫回查詢字串(實作“漂亮”URL),那么您將需要一個額外的條件來防止重定向回圈(以防止重寫的請求被重定向)。例如:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^query=([^&]*)
RewriteRule ^something$ /$0/%1 [QSD,R=302,L]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/408363.html
標籤:
上一篇:正則運算式重寫修復
