macos - 使用 VirtualHost 时,CakePHP 仅适用于 Mac 本地

标签 macos apache .htaccess cakephp mod-rewrite

我这里有一个 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/

相关文章:

node.js - 在 Apache 服务器上首选使用 Node.js 的 'www' 子域

.htaccess - htaccess 重定向规则,主文件夹和子文件夹重定向

php - htaccess无限循环问题

代码块中的 C++11 编译问题

macos - Drush 无法在 MAMP 上连接到 MySQL?

linux - 为什么我的 mod_perl 脚本会卡住我的服务器?

apache - 基于TLD在.htaccess中设置环境变量

macos - 如何显示 NSTimer 下次触发之前的秒数

macos - 无法在 Mac 上安装 sbt

apache - 如何使用 Apache http 代理到两个不同的 tomcat 服务器?