我正在构建一个基于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