根据传入的URL重定向到网站的子目录?

时间:2014-02-01 22:10:57

标签: apache .htaccess redirect

我有两个网站; site1.com和site2.com。

我已经设置了相同的A记录 - 导致相同的服务器/站点。但是,对于site2.com,我正在寻找重定向到子域名;这样,如果用户将site2.com输入浏览器,他们将被重定向到site1.com/directory /

我原本以为我可以通过在/ var / www下创建一个.htaccess文件来实现这一点,其中包含以下内容;

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?site2\.com [NC]
RewriteRule ^(.*)$ http://site1.com/directory/ [R=301,L]

不幸的是,这似乎对传入的请求没有任何影响。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

您应该做的是将其设置为Apache中的虚拟主机。然后,Apache将负责显示该站点的相应文件。 这可以在Apache配置文件中修改。 然后当您在www.site2.com上输入时,它将显示正确的文件。

例如

Server configuration

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot /www/site1
ServerName www.site1.com

# Other directives here

</VirtualHost>

<VirtualHost *:80>
DocumentRoot /www/site1.com/site2
ServerName www.site2.org

# Other directives here

</VirtualHost>

在这里看看VHosts。

http://httpd.apache.org/docs/2.2/vhosts/examples.html

更新: 尝试添加服务器别名。

ServerName   www.site2.com
ServerAlias  *.site2.com

更新2:

回答你的意见。这是另一个基本的例子。很多指令可以在那里进行,但你可以决定。

<VirtualHost *:80>
     ServerAdmin webmaster@site1.com
     DocumentRoot /var/www/html
     ServerName site1.com
     ServerAlias www.site1.com
     ErrorLog /var/logs/httpd/site1-error_log
     CustomLog /var/logs/httpd/site1-access_log common
</VirtualHost>

<VirtualHost *:80>
     ServerAdmin webmaster@site2.com
     DocumentRoot /var/www/html/site2
     ServerName site2.com
     ServerAlias www.site2.com
     ErrorLog /var/logs/httpd/site2-error_log
     CustomLog /var/logs/httpd/site2-access_log common
</VirtualHost>

然后确保CNAME的{​​{1}} DNS记录指向两个站点的@(您的主站点)。因此,如果您愿意,可以使用www或不使用www来访问这些网站。

以下是分步说明。如果它仍然无效,那么你的配置就会出现问题。

http://www.rackspace.com/knowledge_center/article/centos-apache-virtual-hosts