用虚拟主机重写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>
我不这么认为。这更像是如果您输入foo.bar.com,foo.com会在网址栏中解析,但网站foo.bar.com是浏览器中显示的内容。我希望这是有道理的。 – Hossam
啊,我明白了。看起来你需要一个foo.com的虚拟主机,它指向foo.bar.com目前指向的目录。然后,您需要添加foo.bar.com的别名(或者,如果您希望URL栏始终读取foo.com,则使用重定向规则) – 2016-10-04 20:50:56