2009-08-30 135 views
2

我想知道如果htaccess上的多個條目將工作的301重定向。htaccess 301多個文件的重定向

我看到的問題是舊的站點文件具有'html'擴展名,並命名爲不同的名稱,因此一個簡單的全局重定向將不起作用,它必須是每個文件名的一個規則。

本網站每天收到1000次訪問,所以需要注意不要懲罰搜索引擎。

RewriteEngine On 
RewriteBase/
RewriteRule ^file1\.html$ http://www.domain.com/file1.php [R=301,NC,L] 
RewriteRule ^file2\.html$ http://www.domain.com/file2.php [R=301,NC,L] 
RewriteRule ^file3\.html$ http://www.domain.com/file3.php [R=301,NC,L] 
RewriteRule ^file4\.html$ http://www.domain.com/file4.php [R=301,NC,L] 

由於舊文件是html類型,PHP頭重寫將不起作用。

回答

3

我想你可以使用一些正則表達式來減少你正在使用的不同RewriteRules的數量,因爲這些都是相同的方式。

在你的情況下,使用僅這一項可能是OK:

RewriteRule ^(file1|file2|file3|file4)\.html$ http://www.metaboforte.com/$1.php [R=301,NC,L] 

這樣,你確切地指定要重寫的東西;但只有1個RewriteRule。

或者有點更通用:

RewriteRule ^file([0-9]*)\.html$ http://www.metaboforte.com/file$1.php [R=301,NC,L] 

,它允許您定義要每fileXYZ.html,與XYZ改寫了許多。 (爲我所用「*」,沒有號碼都將被納入由重寫規則帳戶;如果你想至少一個數字,你應該使用「+」)

你也可以做一些更通用的 - - 不知道你想要的,但這樣的事情可以做:

RewriteRule ^(.*?)\.html$ http://www.metaboforte.com/$1.php [R=301,NC,L] 

在這裏,您重定向與html的

1

爲什麼不......

RewriteRule ^file([0-9]+)\.html$ http://www.metaboforte.com/file$1.php [R=301,NC,L] 

或者,如果你想重寫舊網站的一切 ...

RewriteRule ^(.*?)\.html$ http://www.metaboforte.com/$1.php [R=301,NC,L] 
+0

感謝您的文章。 – Codex73 2009-08-31 01:09:48