用虚拟主机重写URL

问题描述:

我对系统管理的经验非常有限,我目前正在尝试将路由/写入(这是适当的术语)子域到*域。例如,我有一个名为bar.com的域名,并且我创建了许多子域名,例如foo.bar.com。我希望foo.bar.com能够解析我也拥有的foo.com。 Foo.com有一个A记录,指向foo.bar.com所在的IP地址。用虚拟主机重写URL

如果听起来我没有正确描述这是因为我仍然在学习这一切如何工作。

以下是foo.bar.com虚拟主机文件。

foo.conf:

<VirtualHost 127.0.0.1:81> 
    Define DOCUMENT_ROOT /PATH/TO/PUBLIC/APP 
    Define PHP_PORT 22844 
    Define PHP_PROXY_URL fcgi://127.0.0.1:${PHP_PORT} 

    ServerAdmin [email protected] 
    DocumentRoot ${DOCUMENT_ROOT} 
    ServerName server-foo 
    ServerAlias foo.bar.com 
    ServerAlias www.foo.bar.com 

    ErrorLog "/PATH/TO/error.log" 
    CustomLog "/PATH/TO/access.log" common 
</VirtualHost> 

我的问题是如何将修改这个文件来让这个foo.bar.com解析为foo.com。

这听起来像你正在寻找一种在虚拟主机中重定向的方式。

如果是这种情况,那么您应该可以在虚拟主机中使用mod_rewrite来完成此操作。

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^foo\.bar\.com$ [NC] 
RewriteRule ^(.*) http://foo.com/ [L,R] 

这线程可能会有所帮助:https://serverfault.com/a/120507

编辑:要让foo.com是主要的URL,使用类似下面。

<VirtualHost 127.0.0.1:81> 
    ServerName foo.bar.com 
    ServerAlias www.foo.bar.com 

    Redirect "/" "http://foo.com/" 
</VirtualHost> 

<VirtualHost 127.0.0.1:81> 
    Define DOCUMENT_ROOT /PATH TO CURRENT FOO.BAR.COM/ 
    [your other settings] 

    ServerName foo.com 
</VirtualHost> 
+0

我不这么认为。这更像是如果您输入foo.bar.com,foo.com会在网址栏中解析,但网站foo.bar.com是浏览器中显示的内容。我希望这是有道理的。 – Hossam

+0

啊,我明白了。看起来你需要一个foo.com的虚拟主机,它指向foo.bar.com目前指向的目录。然后,您需要添加foo.bar.com的别名(或者,如果您希望URL栏始终读取foo.com,则使用重定向规则) – 2016-10-04 20:50:56