我有两个网站; 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]
不幸的是,这似乎对传入的请求没有任何影响。任何人都可以帮我解决这个问题吗?
答案 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