我不是 apache 大师。但是我想使用 CakePHP 配置我的服务器以进行大规模虚拟主机。我们的想法是,我们将能够根据目录位置轻松设置同一应用程序的多个版本:
production.domain.com
testv1.domain.com
etc...
所以我知道我的 mod_vhost_alias 工作得很好。我设置了一个基本目录,在其中添加了一个测试 index.html 文件 (/var/www/htdocs/cake/test/webroot)。当我将浏览器指向该位置 (test.domain.com) 时,index.html 会显示在浏览器中。我的 vhost 配置为从 URL 中提取 %1 以了解要指向的目录:
VirtualDocumentRoot /var/www/htdocs/cake/%1/webroot
但是当我将浏览器指向蛋糕应用程序时,我得到一个找不到页面的错误。我怀疑它与 .htaccess 文件中的 mod_rewrite 有关。以下是两者的完整配置:
mod_vhost_alias (in .conf file)
<VirtualHost *:80>
ServerAlias *
UseCanonicalName Off
VirtualDocumentRoot /var/www/htdocs/cake/%1/webroot
<Directory /var/www/htdocs/cake/%1/webroot>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
.htaccess (in webroot - default as it comes from CakePHP)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
任何想法如何让他们一起工作?