我正在基于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
答案 0 :(得分:0)
好像你在滥用VirtualDocumentRoot
。尝试将其更改为:
DocumentRoot /home/xxxxxxxx/workspace/project/rest
此外,这是VirtualDynamicRoot
:Dynamically configured mass virtual hosting
希望有所帮助。