![](/img/trans.png)
[英]Apache mod_rewrite from unfriendly query string to a friendly URL
[英]mod_rewrite: remove query string from URL?
我正在嘗試使用.htaccess進行以下重定向(301)
*?page = 1重定向到*
(其中*是通配符)。
基本上,我只是想阻止任何人在URL的末尾使用?page = 1訪問頁面,而是將它們指向相同的url減去?page=1
。
有這么快的方法嗎?
這應該這樣做:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^page=1$
RewriteRule (.*) $1? [R=permanent]
逐行:
page=1
才能應用以下規則。 如果您希望重定向是臨時的(302),那么您可以刪除=permanent
部分。 暫時移動是R
標志的默認值。
您還可以使用QSD標志(查詢字符串丟棄)重定向某處而不傳遞查詢字符串。
如果您使用的是Apache 2.4您只需使用QSD(查詢字符串放棄標記)來丟棄目標URL中的特定查詢字符串。
以下是Apache 2.4用戶的示例:
舊網址: - / foo / bar /?page = 1
新網址: - / foo / bar /
Htaccess代碼:
RewriteEngine on
RewriteCond %{THE_REQUEST} \?page=1\sHTTP [NC]
RewriteRule ^ %{REQUEST_URI} [L,R,QSD]
上面的規則將使用?page = 1重定向任何uri以刪除查詢字符串。 此示例將在2.4版本的Apache版本上返回500錯誤,因為它們不支持QSD。
在較低版本的Apache上,您可以使用空白問號? 在目標網址的末尾刪除查詢字符串。
一個例子 :
RewriteEngine on
RewriteCond %{THE_REQUEST} \?page=1\sHTTP [NC]
RewriteRule ^ %{REQUEST_URI}? [L,R]
上面的示例幾乎適用於所有版本的apache。
(希望這可以幫助!)
要剝離整個查詢字符串,這就足夠了:
RewriteRule ^(.*) http://domain.com/$1? [R=301,L]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.