1

我正在构建一个基于Tonic的 RESTful api 。在我的开发人员机器和我们的舞台服务器上,我们使用虚拟主机。

Tonic 使用 .htaccess 文件将传入调用转换为它的 dispatcher.php 文件。这在没有启用 VirtualHosts 的服务器上运行良好。

但是,如果我启用 VirtualHosts,即使文件的路径和名称正确,我也会找不到文件。

这是我的开发人员机器上的 VirtualHost 设置。

<VirtualHost *:80>
    ServerAdmin admin@xxxxxxxxxxxx
    ServerAlias *.dev.xxxxx
    VirtualDocumentRoot /home/xxxxxxxx/workspace/%1
    <Directory /home/xxxxxxxx/workspace/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

</VirtualHost>

Tonic 的 .htacces 位于项目根目录中名为 rest 的文件夹中:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !dispatch\.php$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* dispatch.php [L,QSA]
</IfModule>

调用http://project.dev.xxxxx/rest/给出:

Not Found
The requested URL /home/xxxxxxxx/workspace/project/rest/dispatch.php was 
not found on this server.

Apache/2.2.22 (Ubuntu) Server at xxxxxxx Port 80
4

1 回答 1

0

看起来好像你在滥用VirtualDocumentRoot. 尝试将其更改为:

DocumentRoot /home/xxxxxxxx/workspace/project/rest

另外,这里有一个很好的解释VirtualDynamicRoot动态配置的海量虚拟主机

希望有帮助。

于 2012-05-22T13:24:19.713 回答