2013-07-14 129 views
0

我有一個網站(WordPress多站點),我已經將一堆內容從路由域(http:// domain [dot] com)移動到子域(http: /sub.domain[dot]com)。現在我需要將用戶引導到路由網站的所有頁面(http:// domain [dot] com/page)到其新位置(http://sub.domain [dot] com/page)。但是......這就是我真正掙扎的一點......我需要從這個重寫中省略路由URL,因爲有另一個我不需要影響的「地理重定向」。因此,我需要做的只是重定向這些子頁面而不是父/主域。使用htaccess重定向子頁面

這裏就是我的工作的(最近的一次迭代):

# ignore the home page, not working :(
RewriteCond %{HTTP_HOST} !^(.*)\.routetogreatness\.com$ [NC] 
# redirect all the sub pages, works 
RewriteCond %{HTTP_HOST} ^routetogreatness.com [NC] 
RewriteRule ^(.*)$ http://global.routetogreatness.com/$1 [L,R=301] 

任何幫助將非常感激地接受。

回答

0

我想你正在搜索的是一個條件,它檢查被請求的文件是否不是文件名。那是RewriteCond %{REQUEST_FILENAME} !-f。如果%{REQUEST_FILENAME}(我相信基於請求的服務器上的文件的絕對路徑)不是文件,這是真的。 (請注意:我還沒有測試此代碼,因爲我沒有使用此位置的服務器,但我認爲它應該工作。)

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} ^domain.com [NC] 
RewriteRule ^(.*)$ http://sub.domain.com/$1 [L,R=301] 

的其他解決辦法是隻重寫URL如果請求的網址包含斜線。它會重定向domain.com/folder/index.php,但不是domain.com/index.php

RewriteCond %{REQUEST_URI} ^/([^/]+)/(.+)$ 
RewriteCond %{HTTP_HOST} ^domain.com [NC] 
RewriteRule ^(.*)$ http://sub.domain.com/$1 [L,R=301] 
+0

OMG感謝這麼多的這麼快。迴應Sumurai8,那第二個完全釘了它(第一個沒那麼多),我應該發佈我的消息兩小時前!再次感謝。 –

0

好了,所以上述方案並沒有完全制定出適合我,因爲它原來,雖然這美麗的工作子/子頁面上,它會跳過父頁面以及主頁(如。域/例如新聞,我最終與此運行:

RewriteCond %{REQUEST_URI} !^/$ 
RewriteCond %{HTTP_HOST} ^domain.com [NC] 
RewriteRule ^(.*)$ http://sub.domain.com/$1 [L,R=301] 

這只是跳過主頁或根URL和其他重定向一切,甚至404