簡體   English   中英

Apache mod_rewrite/mod_redirect:將帶有查詢參數的 URL 轉換為對 SEO 友好的 URL。 一些查詢參數被忽略

[英]Apache mod_rewrite/mod_redirect: convert URL with query parameters into an SEO-friendly URL. some query parameters are ignored

如上。

最好用一個例子來解釋:

我已經查看/搜索了網絡,但沒有任何東西與我正在嘗試做的事情相提並論。 謝謝你。

您可以使用 mod_rewrite 執行以下操作:

RewriteEngine On

RewriteCond %{QUERY_STRING} (?:^|&)p1=([^&]+)
RewriteCond %1@%{QUERY_STRING} ^([^@]+)@(?:|.*&)p2=([^&]*)
RewriteRule ^/?(my-page)$ /$1/%1/%2 [QSD,R=302,L]

第一個條件捕獲p1的值並將其傳遞給同樣捕獲p2值的第二個條件 然后在替換字符串中將它們分別用作%1%2反向引用。

URL 參數可以按任何順序出現。

@ (在第二個條件中)只是一個不會出現在v1的任意字符,因此在搜索p2時用作v1和查詢字符串之間的分隔符。

所有其他 URL 參數(即p3 .. pN )都將被忽略(並丟棄)。

參數p1必須存在一個非空值(否則結果重定向將不明確)。 p2也必須存在,但值可以為 例如。 /my-page?p2=&p1=v1仍然會成功重定向到/my-page/v1/

QSD標志會丟棄請求中的原始查詢字符串。

根據使用這些指令的位置(例如目錄服務器上下文)以及最終路由 URL 的方式,您可能需要添加初始條件以確保僅處理直接請求(而不是重寫的請求)。

例如,如果需要,添加以下作為第一個條件:

RewriteCond %{ENV:REDIRECT_STATUS} ^$
:

暫無
暫無

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

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