2012-09-13 238 views
1

我們正在遷移到一個新的服務器結構,我需要一些htaccess的幫助。我是一名PHP程序員,絕不是Apache專家。.htaccess網站遷移

這裏是易懂的說明:

  • 我需要www.oldsite.com的根目錄重定向到根目錄www.newsite.com。

  • 一個特定的目錄www.oldsite/DIR1重定向到新網站一個子域名作爲newdomain.newsite.com

  • 其他一切www.oldsite.com/whatever/需要去應用。 newsite.com/whatever/

我有現在的問題是:

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteRule/http://www.newsite.com [L,R=301] 
RewriteRule (.*)dir1/ http://newdomain.newsite.com [L,R=301] 
RewriteRule (.*)$ http://apps.newsite.com/$1 [L,R=301] 

但它不是工作,我希望它...

無論如何,任何和所有的幫助將不勝感激。

感謝, -Orallo

回答

0

使用mod_alias中,你可以(在的oldsite.com您的文檔根目錄)把這個在任一服務器/虛擬主機的配置或在您的htaccess文件:

Redirect 301 /dir1 http://newdomain.newsite.com 
RedirectMatch 301 ^/(.+)$ http://apps.newsite.com/$1 
RedirectMatch 301 ^/$ http://www.newsite.com 

至於mod_rewrite的,你需要因爲你是在一個htaccess文件使用它們從你的重寫規則刪除前面的斜線:

RewriteEngine On 
RewriteBase/
RewriteRule ^$ http://www.newsite.com [L,R=301] 
RewriteRule ^dir1/(.*) http://newdomain.newsite.com/$1 [L,R=301] 
RewriteRule ^(.+)$ http://apps.newsite.com/$1 [L,R=301] 
+0

謝謝喬恩,這工作就像一個魅力。拯救了我的一天! – orallo

+0

還有一個問題,我剛纔聽說,現在管理員希望根目錄服務於舊域的索引而不是發送到新網站?我刪除了www.newsitec.com並用/index.php取代了它,但它將第三條規則重定向到apps.newsite.com。有沒有辦法阻止它? – orallo

+0

另外,我剛剛意識到,如果我忽略第二條規則中的尾部/ in dir1,重定向將通過第三條規則並轉到apps.newsite.com/dir1而不是newdomain.newsite.com:-O – orallo

0

你的第一個改寫是造成你的問題,基本上都重定向。

這應該做你想要什麼:

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteRule ^/?$ http://www.newsite.com [L,R=301] 
RewriteRule ^/?dir1/(.*) http://newdomain.newsite.com/$1 [L,R=301] 
RewriteRule ^/?(.*)$ http://apps.newsite.com/$1 [L,R=301] 

我建議把這套重寫規則在實際的Apache的conf文件中查找該主機並關閉AllowOverride,因爲它會提供更好的性能。由於您本質上不再使用舊網站的Web目錄,因此沒有理由讓Apache服務器在該目錄(以及任何其他可能仍在那裏的子目錄)中查找.htaccess文件。

+0

謝謝你太麥克,你可以看到兩個非常相似,我也嘗試過此配置和它完美的作品了。 – orallo