2012-10-18 28 views
0

這裏是我的問題描述htaccess的:重定向到子域,如果找不到網頁

我從這個路徑移動網站

http://www.site.com/any-thing-here-workfine

子域這樣

http://portal.site.com/any-thing-here-workfine

但到現在,谷歌有我以前的鏈接,所有這些鏈接都下降

所以我現在正在努力從WWW連桿運動下來到子域,如果該頁面返回NOTFOUND

平均

我在谷歌的鏈接仍然

http://www.site.com/any-thing-here-workfine此頁面NOTFOUND

所以我想重定向301到相同的網址,但像thia

http://portal.site.com/any-thing-here-workfine

我該怎麼做?

+0

是我的答案都有幫助嗎?希望你能夠讓你的配置工作! –

回答

4

這是mod_rewrite的

RewriteEngine On 
RewriteCond %{HTTP_HOST} =www.site.com [NC] 
RewriteRule ^/?(.*) http://portal.site.com/$1 [R=301] 

將重定向一切都非常簡單。但是如果您在www.site.com上發佈了一些新內容,而您又不想重新定向?

如果您只是在www.site.com上有靜態內容,那麼很容易。只需爲不存在的文件/文件夾添加一個「404」測試。

RewriteEngine On 
RewriteCond %{HTTP_HOST} =www.site.com [NC] 
# 404 test -- file/folder exists? 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/?(.*) http://portal.site.com/$1 [R=301] 

但是,如果你有www.site.com一些新的「虛擬」的網址不直接對應於文件上的文件系統,那麼你就必須弄清楚如何篩選這些出你的重定向規則(否則在404-測試中你會得到誤報)。比方說,在www.site.com虛擬內容,即不應重定向,所有/ newsite/...然後開始你會像這樣結束:

RewriteEngine On 
RewriteCond %{HTTP_HOST} =www.site.com [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/?newsite/ 
RewriteRule ^/?(.*) http://portal.site.com/$1 [R=301] 
+0

你是老闆。這可能爲我今天的工作節省了一大筆錢。 – Bon