2013-02-14 88 views
0

我想用htaccess做一个简单的任务,但我没有任何使用htaccess的经验。基本上,这是我想要实现的。htaccess从子目录重定向到备用域

我有一个网站(www.example1.com)与托管帐户。现在,我启动了第二个使用相同主机帐户的网站(www.example2.com)。

物理上www.example2.com的文件存在于www.example1.com/example2中。

正如您所料,我试图实现的是,当用户编写www.example1.com/example2时,他们被重定向到www.example2.com。

这是我试着做

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^/example1.com/ 
RewriteRule !^/example2.com/ 

而且还...

Order Deny,Allow 
Deny from all 
Allow from example2.com 

任何帮助,将不胜感激!

回答

0
RewriteCond %{HTTP_HOST} ^(www\.)?example1\.com$ [NC] 
RewriteRule ^example2(.*) http://www.example2.com$1 [R=301, L] 

第一行 - 检查主机是否与带有或不带“www。”的example1.com匹配。

第二行 - 检查路径是否以example2开头,如果是,则重定向到www.example2.com,在example2之后维护任何现有路径。

+0

嗨大卫,谢谢你的回复。这样做后,如果我转到example1.com/example2,它仍然不会将URI重写为example2.com。任何线索为什么会发生这种情况?感谢堆! – simplyspades 2013-02-14 05:18:28

+0

首先,您是否在更改规则后重新启动服务器?你需要。如果不是这样,我会建议简化规则,这样example1.com上的每个请求都会通过将RewriteRule更改为'RewriteRule ^(。*)$ http://www.example2.com$1 [ R = 301,L]'。如果这不起作用,那么它意味着您的重写规则没有达到(在您的配置中的其他地方发布),或者RewriteCond与example1.com不匹配(检查拼写错误)。如果该规则匹配,那么它就是失败的example2路径匹配,您可以在规则的这一部分工作。 – 2013-02-14 16:49:53