2016-06-11 157 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