2011-05-20 56 views

回答

1

最好的我知道,你的觀點# 2不能沒有RewriteMap,這需要一些討厭的配置,或多個規則。

該實現應該是通用的,可用於任意數量的下劃線,但其代價很高,因爲它可能會觸發許多重定向(事實上,如果您的路徑中有下劃線數量很多,可能足以引發瀏覽器中的重定向錯誤) :

RewriteBase/
RewriteRule ^(folder/[^_]*)_(.*\.html?)$ /$1-$2 [L,R=301] 
RewriteRule ^folder/(*+)\.html?$ /$1.shtml [L,R=301] 

替代品包括根據需要列舉的用例,或(更好的,我懷疑)重寫請求到Perl或PHP腳本,做REGEXP_REPLACE +從那裏重定向301。

RewriteBase/
RewriteRule ^folder/(*+)\.html?$ /folder/redirect.php [L,QSA] 
0
RewriteEngine On 
RewriteBase/
RewriteRule ^folder/([a-z]+)_(\d+)_(\d+)\.htm$ http://example.com/$1-$2-$3.shtml [L,R=301]