我这里有一个 CakePHP 2.x 应用程序:/Users/cameron/Sites/ExampleApplication
里面有标准的结构:
/app
/webroot
etc.
但是当我去:
localhost/~cameron/ExampleApplication
我收到错误:在此服务器上找不到请求的 URL/Users/cameron/Sites/ExampleApplication/app/webroot/。
但是,如果我设置一个 VirtualHost,如下所示:
<Directory "/Users/cameron/Sites">
Header set Access-Control-Allow-Origin "*"
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:80>
DocumentRoot "/Users/cameron/Sites/ExampleApplication"
ServerName example.com
UseCanonicalName Off
</VirtualHost>
效果很好!
有什么想法为什么它适用于 VirtualHost 但在通过通常的本地主机访问它时却不起作用?
以下是三个 .htaccess 文件的内容:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
最佳答案
如果使用Mamp,则必须配置htaccess文件 并修改文件夹 root/app/webroot 和 app/config 中的 htaccess
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase / "production" or /nameFolder/ "dev"
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
关于macos - 使用 VirtualHost 时,CakePHP 仅适用于 Mac 本地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30001923/