Cakephp 2.2没有mod_rewrite重定向错误

时间:2012-11-02 19:47:35

标签: cakephp mod-rewrite cakephp-2.2

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

Apache2启动并运行,Cake似乎也在运行。如果我去http://127.0.0.1/cake/index.php,所有绿色标签(使用PostgreSQL 9.1)。我按照教程create the blog project进行了操作,并在/var/www/cake/app/Controller/PostsController.php处创建了控制器文件(还有CakeControllerAppController以及PagesController个文件。

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

当我输入类似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 64位。 Apache2.2(与SO一起安装),CakePHP 2.2.3和PHP 5.2.8(或更高版本)。

1 个答案:

答案 0 :(得分:1)

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

已经回答here,CakeBook解释了它here。但我个人使用了一些不同的设置:

/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>