2010-06-30 67 views
8

我們公司正在改變網絡平臺,我們希望能夠保留我們的Google結果,因此我們計劃將301重定向到我們的htaccess文件中。.htaccess文件可能太大

我擔心的是,如果我把所有這些重定向(可能總共3000 - 5000),它會減慢服務器,因爲它會進行所有這些檢查。

有誰知道如果有一個htaccess文件這麼大會導致任何問題?我有一個相當快的網站服務器(8核心),所以我有相當可用的馬力。

+0

對此的任何結果? – Andor 2012-04-18 16:34:19

+4

我發現的是,您可以執行TON重定向301行,但性能不會有明顯差異。但是,RedirectMatch可以減慢一些事情,一旦你有幾千個。最後,我採取了重定向並創建子目錄,並將相關的Redirect和RedirectMatch行放在那裏。 – 2012-04-19 13:40:49

回答

3

我懷疑這會明顯降低服務器的速度。但首先檢查出來。

在www/temp文件夾中創建一個.htaccess 5k行文件,並使用一些像您將要使用的重寫規則。查看使用和不使用.htaccess文件訪問頁面需要多長時間。

+0

我打算試一試。當我有一些真實的數據時,我會發布我的經歷。 – 2010-07-01 13:08:12

+0

你在測試中成功了嗎?你有沒有真實的數據? – Jon 2014-01-08 15:57:27

1

嗯。我沒有任何硬編碼,不管Apache是​​否可能在很多重定向方面都會出現性能問題,但是我會爲擁有如此大的htaccess文件而感到不安,因爲每當請求時,無論它是新的還是舊的URL,都會在上解析。

如果可能的話,我會傾向於使用服務器端語言和用於查找的數據庫表來處理「舊」URL與新數據庫的匹配,只是爲了便於維護。

是否以及如何可能取決於您的舊的新的URL結構。例如,如果,所有舊的URL都有一個共同的結構像

www.domain.com/cms/folder/pagename.htm 

能從新的結構分開,我想所有的「老」的流量重定向到一箇中央腳本文件(無論您的服務器平臺,ASP, PHP ...),並做一個簡單的查找和頭重定向那裏。

2

其他的答案有一些很好的建議,但如果你不拉閘使用一些替代重寫規則,我強烈建議將這些行放在主服務器配置文件中,而不是.htaccess文件。這樣,Apache在啓動時只會解析它們,並且只需引用內部數據結構,而不必在每個請求上檢查文件.htaccess。實際上,Apache開發人員建議不要使用.htaccess文件,除非您無權訪問主服務器配置。如果你不使用.htaccess文件,你可以在主配置中設置

AllowOverride None 

,然後阿帕奇甚至不花時間查找的文件都沒有。在繁忙的服務器上,這可能是一個有用的優化。

您可以考慮做的另一件事(與上述結合)使用RewriteMap指令將URL重寫「外包」爲外部程序。你可以編寫這個外部程序,比如說將舊的URL存儲在一個散列表中,或者任何適合的優化類型。