我在乘客的ubuntu hardy盒子上运行Rails应用程序。我也有几个基本的html网站在同一个盒子上运行。我的问题是为html网站设置的apache vhost似乎阻止我的Rails应用程序解析为正确的URL。
我有许多Rails应用程序使用乘客在不同的切片上运行,所以我知道如何使这项工作一般。
我在终端或apache日志中没有收到任何错误。一切看起来都很完美,但网站根本无法通过正确的网址解析。相反,当我转到我的Rails应用程序所在的URL时,我会在我的切片上看到该网站是apache默认vhost。
为了确认我的假设,我禁用了与静态html页面关联的切片上的所有vhost。在这之后,我的Rails应用程序出现在正确的URL并且工作正常。当我为html网站重新启用vhost时,我又回到了同样的问题。
我敢打赌,这是一个简单的配置修复,但我无法弄明白。有人知道吗?
感谢。
是的,静态网站可以自行运行。在任何情况下,静态网站都可以。
我的vhost文件正在使用超级基本设置。静态站点vhost文件如下所示:
<VirtualHost *:80>
ServerName foo.com
ServerAlias www.foo.com
DirectoryIndex index.html
DocumentRoot /home/blah/public_html/foo/public
</VirtualHost>
Passenger vhost文件如下所示:
<VirtualHost *:80>
ServerName bar.com
ServerAlias www.bar.com
DocumentRoot /home/blah/public_html/bar/current/public
</VirtualHost>
答案 0 :(得分:1)
如果要验证apache虚拟主机配置,请尝试执行以下操作:
apache2 -S
或
apache2 -t -D DUMP_VHOSTS
两者都应该转储你的vhosts列表。也许你的rails虚拟主机被分配给其他一些IP?
答案 1 :(得分:0)
你有-MultiViews选项打开/关闭吗?
<VirtualHost *:80>
ServerName www.phusion.nl
DocumentRoot /websites/phusion
<Directory /websites/phusion>
Allow from all
</Directory>
RailsBaseURI /rails # <-- These lines have
<Directory /websites/phusion/rails> # <-- been added.
Options -MultiViews
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
MultiViews的效果如下:如果服务器收到/ some / dir / foo的请求,如果/ some / dir启用了MultiViews,并且/ some / dir / foo不存在,那么服务器会读取目录查找名为foo。*的文件,并有效地伪造一个命名所有这些文件的类型映射,为它们分配相同的媒体类型和内容编码,如果客户端通过名称请求其中一个文件。然后,它会根据客户的要求选择最佳匹配