2012-11-02 33 views
0

我做了所有的设置,不使用mod_rewrite Apache 2.2和CakePHP。Cakephp 2.2没有mod_rewrite重定向错误

Apache2正在运行,Cake似乎也在运行。如果我去http://127.0.0.1/cake/index.php,所有绿色标签(使用PostgreSQL 9.1)。我按照教程create the blog project创建了控制器文件/var/www/cake/app/Controller/PostsController.php(也有CakeControllerAppControllerPagesController文件)。

在模型目录中,我得到了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 64bits。 Apache2.2(与SO一起安装),CakePHP 2.2.3和PHP 5.2.8(或更高版本)。

回答

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> 
+0

Dude,ty年老的VM回答,但我想你错过了......正如我说的我的目标是不使用mod_rewrite。因此,如解释我取消注释一行和删除所有.htaccesss(实际上我重命名所有,但),我用网址的提到b4。 –

+1

无论如何,我指出了答案...... Yr链接让我学到了更多。 –