0

我做了所有设置,不使用 mod_rewrite Apache 2.2 和 CakePHP。

Apache2 启动并运行,Cake 似乎也在运行。如果我去http://127.0.0.1/cake/index.php,所有绿色标签(使用 PostgreSQL 9.1)。我按照教程创建了博客项目并在/var/www/cake/app/Controller/PostsController.php(也有CakeController和文件) 创建了控制器文件。AppControllerPagesController

正如教程所说,在模型目录中,我得到了 Post.php 和 AppModel。在 View 文件夹中,我创建了 Posts 文件夹以及文件 index.ctp 和 view.ctp。

当我键入一个 URL时,http://127.0.0.1/cake/index.php?url=/posts/它会转到 Cake 主文件夹的 index.php。它重定向到那里!例如,如果我将 URL 更改为http://127.0.0.1/cake/index.php?url=/posts/view/1(如教程)相同的内容。这张照片出了什么问题?

我的环境是 Debian 6.0-6 64bits。Apache2.2(随 SO 一起安装)、CakePHP 2.2.3 和 PHP 5.2.8(或更高版本)。

4

1 回答 1

1

你确定这mod_rewrite是在重写吗?您可以发布您的 .htaccess 文件的内容 - 顶级目录中的一个(即 htdocs)和您的app/webroot目录中的一个吗?您的顶级目录是其中包含applib的目录。我怀疑你RewriteRule的两者都是错误的。无论如何,如果您没有更改这些文件,那肯定是错误的。:) 您不应该更改中间 .htaccess文件 - app.

这已经在这里得到解答 CakeBook 在这里进行了解释。但我个人使用了一些不同的设置:

/var/www/test.cake.lan/htdocs/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$ /app/webroot/ [L]
    RewriteRule (.*) /app/webroot/$1 [L]
</IfModule>

/var/www/test.cake.lan/htdocs/app/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>

/var/www/test.cake.lan/htdocs/app/webroot/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /app/webroot/index.php?url=$1 [QSA,L]
</IfModule>
于 2012-11-03T09:01:32.537 回答