2015-07-13 134 views

回答

-1

你想只爲特定頁面?或更多作爲一般方法?

RewriteRule ^page/competition.html?(.+)$ /page/competition.html [L,NC] 

這將是實現它的最簡單的形式,但只適用於確切的文件名。對於更一般的方法,您需要添加更多的佔位符。

+1

不正確 - 'mod_rewrite'不會將查詢字符串公開給規則。此外,您的規則是倒退 - OP希望查詢字符串基本上被隱藏,但仍然是請求的一部分。我可能會誤解,但在問題中使用* rewrite *這個詞指向那個方向。 –

1

在你的問題,你的國家,你想長期URI 改寫爲較短的一個。不幸的是,這不是很清楚。假設你想簡單地刪除使用重定向查詢字符串,可以使用以下命令:

RewriteCond %{QUERY_STRING} ^utm_medium=email&utm_campaign=([^&]+)&utm_source=([^&]+)&utm_term=([^&]+)$ 
RewriteRule^%{REQUEST_URI}? [R=302,L] 

這是一個廣義的條件和規則,將檢查查詢字符串中的任何utm信息。如果存在,則刪除查詢字符串。

如果你希望只爲page/competition.html做到這一點,那麼改變規則是:

RewriteRule ^(page/competition\.html)$ /$1? [R=302,L] 

如果你想簡單地刪除任何查詢字符串形成以page/competition.html請求的一部分,那麼你可以使用這個代替上述:

RewriteCond %{QUERY_STRING} !^$ 
RewriteRule ^(page/competition\.html)$ /$1? [R=302,L] 

這基本上告訴Apache來檢查查詢字符串不爲空,並且如果不是的話,完全剝離出來。

要使重定向永久,請將302更改爲301