1

我有一些鏈接,我需要重定向,如:如何用查詢字符串做一個htaccess 301重定向?

/pass-help.php?action=1&[email protected] to /about/help 
or 
/contests/contest-a?testa=1&testb=1 /user/index/contest 

我需要一種方法來查找鏈接actionemail以上,因爲它們可以是任何東西。

可能像/pass-help.php?action= (\?.+) &電子郵件= (\?.+)到/約/幫助

但林不知道如何編寫查詢字符串。

有什麼想法?

如果是這樣,請解釋一下,所以我可以理解發生了什麼。

感謝

回答

0

如果查詢字符串並不重要,你可以不理會他們:

通過mod_alias中

Redirect 301 /pass-help.php /about/help? 
Redirect 301 /contests/contest-a /user/index/contest? 
用mod_rewrite

RewriteRule ^/?pass-help\.php$ /about/help? [L,R=301] 
RewriteRule ^/?contests/contest-a /user/index/contest? [L,R=301] 

注意在mod_alias的情況下,最後會有一個stub ?。這是爲了擺脫查詢字符串所需要的。

如果查詢字符串需要有一定的PARAM的名字,但你不關心的值:

用mod_rewrite:

RewriteCond %{QUERY_STRING} (^|&)action= 
RewriteCond %{QUERY)STRING{ (^|&)email= 
RewriteRule ^/?pass-help\.php$ /about/help? [L,R=301] 

RewriteCond %{QUERY_STRING} (^|&)testa= 
RewriteCond %{QUERY_STRING} (^|&)testb= 
RewriteRule ^/?contests/contest-a /user/index/contest? [L,R=301] 

如果查詢字符串需要有一些PARAM名確切的一些價值:

RewriteCond %{QUERY_STRING} (^|&)action=1 
RewriteCond %{QUERY)STRING{ (^|&)[email protected] 
RewriteRule ^/?pass-help\.php$ /about/help? [L,R=301] 

RewriteCond %{QUERY_STRING} (^|&)testa=1 
RewriteCond %{QUERY_STRING} (^|&)testb=1 
RewriteRule ^/?contests/contest-a /user/index/contest? [L,R=301]