2016-06-11 150 views
1

我開始在一個我剛剛購買的域名上的博客,並希望將另一個博客設置爲子域名。URL重定向通過HTACCESS

現在,如果這個輔助博客起飛以及我希望它在不久的將來,我想將它設置在它自己的域名,但我想知道是多麼容易重新引導誰有現有的網址到新的。

我有一個文件夾結構是這樣的:

domain.com >>> htaccess . index.php . about.php . blog/ . features/ 

BlogFeatures文件夾中還包含一個htaccess文件和自己的index頁面+其他相關的PHP頁面。

我想知道您是否可以僅使用位於主文件夾domain.com下主文件htaccess的文件將用戶重定向到新域,或者是否需要編輯每個子文件夾中的htaccess。

這樣做的最佳方式是什麼?在某種程度上,這將如何成功完成?

+0

'RewriteRule^http://new-domain.com% {REQUEST_URI} [R,L]'那它是 – hjpotter92

+0

而這在** Primary ** htaccess?這意味着我可以刪除所有其他文件和文件夾,只需在子域中有一個'htaccess'? –

+0

是的!就這些。 – hjpotter92

回答

1

是的,所有你需要做的是使用以下命令:

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule (.*) http://www.newblog.com/$1 [R=301,L] 

因此,當有人訪問舊域,它會直接到新的。

+0

要小心。該規則將重定向所有內容,包括查詢您的主要博客。你想要的只是重定向請求到你的子域。爲此,你需要一個重寫條件(只有當條件滿足時才重定向)看到我的回答 – BeetleJuice

0

將子域sub.mydomain.com移動到newdomain.com後,可以使用htaccess mod_rewrite模塊將查詢從子域重定向到新域。您會將規則放在控制舊域的頂級htaccess文件中。與上面的例子中域,它會是這樣的:

Options +FollowSymLinks 
# turn on mod_rewrite 
RewriteEngine On 
RewriteBase/

# only redirect if query is for the sub domain (non case-sensitive match) 
RewriteCond %{HTTP_HOST} ^sub\.mydomain\.com$ [NC] 

# rewrite all urls (that match the subdomain host) to new domain, 
# be sure to include the original path and query string 
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [QSA,L,R=301] 

如果您的新域名不使用www前綴,剛剛從重寫規則刪除。 QSA通知服務器沿着查詢字符串發送(?字符後的部分url)。 L表示停止處理htaccess文件。 R=301的意思是告訴瀏覽器從此它可以直接進入newdomain.com,只要用戶試圖去sub.mydomain.com

+0

因此,如果用戶去說'http://old-domain.com/features/interviews/1111/an-interview他們會自動被重定向到'http:// new-domain.com/features/interviews/1111/an-interview-with-a-band'? –

+0

不完全。您在OP中表示,您只想將次級博客從子域重定向到新網站(而不必將主要博客從基本域重定向),對嗎?去old_domain.com的用戶不會被重定向(她不符合「RewriteCond」條件,但是轉到「subdomain.old_domain.com」的用戶將被重定向。此外,上述規則會保留查詢字符串,不像thickguru的答案。'subdomain.olddomain.com/path?post = 123'應該被重定向到'newdomain.com/path?post = 123'。這就是爲什麼我有'QSA'標誌後規則 – BeetleJuice

+0

你不需要在這裏使用QSA當目標路徑也包含一個查詢字符串,然後它將它們結合起來時,QSA很有用 – starkeen