首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根目录请求解析到Apache中的错误VirtualHost

根目录请求解析到Apache中的错误VirtualHost
EN

Stack Overflow用户
提问于 2012-12-19 18:50:59
回答 1查看 3.4K关注 0票数 3

我有两个网站运行在Apache服务器后面。

其中之一向api.xyzzy.com提供请求

另一个服务于任何其他传入的流量(数十个域、子域等),因此是一个通配符。

使用下面的配置,请求到http://api.xyzzy.com/下的深度链接.转到正确的虚拟主机(第一个),但顶级请求http://api.xyzzy.com/加载第二个捕获所有通配符虚拟主机。

我在这里做错了什么?

代码语言:javascript
复制
LoadModule passenger_module /home/webby/.rvm/gems/ruby-1.9.3-p286/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /home/webby/.rvm/gems/ruby-1.9.3-p286/gems/passenger-3.0.18
PassengerRuby /home/webby/.rvm/wrappers/ruby-1.9.3-p286/ruby

NameVirtualHost *:80

<VirtualHost *:80>
        ServerName api.xyzzy.com
        ServerAlias api.xyzzy.com
        RailsEnv production
        DocumentRoot /home/webby/rails/current/public
</VirtualHost>

<VirtualHost *:80>
        ServerAlias *
        <Directory /usr/local/xyzzy/webapps/wwwroot >
                Options Indexes MultiViews
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>
        DocumentRoot /usr/local/xyzzy/webapps/wwwroot
</VirtualHost>

更新:

下面的配置现在似乎正在按预期工作。这是基于@Winfield的回答。

看来我的测试可能出错了。我的浏览器(Chrome)可能是自动使用https (而不是http)前缀完成我输入的地址。不幸的是,我没有注意到这个异常,直到在尝试了几十个配置排列之后,所以很难知道最终的正确分辨率是什么。我应该在命令行上使用curl进行更可靠的测试,而不是在浏览器栏中键入。

代码语言:javascript
复制
<VirtualHost *:80>
        <Directory /usr/local/xyzzy/webapps/wwwroot >
                Options Indexes MultiViews
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>
        DocumentRoot /usr/local/xyzzy/webapps/wwwroot
</VirtualHost>

<VirtualHost *:80>
        ServerAlias api.xyzzy.com
        RailsEnv production
        DocumentRoot /home/webby/rails/current/public
</VirtualHost>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-19 20:47:29

我认为您最好使用“默认”虚拟主机(首先定义)来解决这个问题,而不是使用通配符虚拟主机。您可以交换订单并填写正确的服务器名称。这应该会将非API主机名设置为命中默认(第一个) vhost,以及任何匹配api主机名的api都会命中api vhost。就像这样:

代码语言:javascript
复制
<VirtualHost *:80>
        ServerName www.xyzzy.com
        ServerAlias xyzzy.com
        <Directory /usr/local/xyzzy/webapps/wwwroot >
                Options Indexes MultiViews
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>
        DocumentRoot /usr/local/xyzzy/webapps/wwwroot
</VirtualHost>

<VirtualHost *:80>
        ServerName api.xyzzy.com
        ServerAlias api.xyzzy.com
        RailsEnv production
        DocumentRoot /home/webby/rails/current/public
</VirtualHost>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13959092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档