用虚拟主机重写URL

时间:2016-10-04 19:59:37

标签: apache system-administration

我在系统管理方面的经验非常有限,而且我目前正在尝试将子域重新路由/写入(通常是适当的术语)子域到顶级域。例如,我有一个名为bar.com的域名,我创建了许多子域名,例如foo.bar.com。我喜欢foo.bar.com来解析我也拥有的foo.com。 Foo.com有一条A记录,指向foo.bar.com所在的IP地址。

如果听起来我没有正确描述这一点,那是因为我还在学习这一切是如何运作的。

以下是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 webmaster@
    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。

1 个答案:

答案 0 :(得分:0)

听起来您正在寻找在虚拟主机中重定向的方法。

如果情况如此,那么您应该能够在虚拟主机中使用mod_rewrite来实现这一目标。

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

此主题可能有所帮助:https://serverfault.com/a/120507

修改:要将foo.com作为主要网址,请使用以下内容。

<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>