2011-11-29 96 views
2

我一直在试图建立的CakePHP我的服务器的发展部分“URL重写不正确的服务器上配置”,我似乎无法解决“URL重写的配置不正确你的服务器“错误。我怀疑我没有用正确的RewriteBase配置.htaccess文件。我已经尝试了各种不同的RewriteBase为每个文件,但我似乎无法打到正确的,而蛋糕并没有给我比“不工作”以外的任何信息(URL重写错误不会结束在Cake的错误日志中)。CakePHP的2.0.4

我没有访问我的httpd.conf文件,但我用其他框架(Wordpress和CodeIgniter).htaccess和mod_rewrite没有问题。

我的网站基本网址:http://dev.domain.com/cake/

我的基本服务器的路径是:/首页/用户名/的public_html的/ dev /蛋糕/

蛋糕根的.htaccess:

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

Cake app directory .htaccess:

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

Cake webroot directory .htaccess:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /cake/app/webroot 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?/$1 [QSA,L] 
</IfModule> 
+0

现在我很困惑。如果我能在每个文件摆脱RewriteBase的,然后添加到URL(比如,http://dev.domain.com/cake/stuff/),我得到一个错误信息说我没有创建控制器,如果我创建控制器,它似乎工作。所以URL重写工作,但蛋糕的检查失败? – Azuaron

+0

我也得到一个错误,因为PDO是不是我的服务器上安装。解决该错误(php.ini问题)后,URL重写错误消失。所以URL重写错误可能与URL重写没有任何关系,并且可能是由(似乎是)单独的问题引起的。 – Azuaron

回答

0

你的vhost.conf是什么样的?如果在DocumentRoot中有适当的路径,则根本不需要在.htaccess中指定RewriteBase。只要坚持默认。

在vhost中尝试DocumentRoot /home/username/public_html/dev/cake/app,并从您的.htaccess中删除RewriteBases

+0

我解决了我自己的问题(Stack不会让我“回答我自己的问题”8小时,所以它在评论中)。 PDO没有安装在我的服务器上,当我解决这个问题时,重写错误消失了。 – Azuaron

6

您是否创建了一个新的default.ctp布局文件,然后“URL重写未在服务器上正确配置”。出现?

如果是这样的话,它发生在我身上。它的工作就好了。我认为Cake在这里抛出一个错误的错误信息。

+0

我解决了我自己的问题(Stack不会让我“回答我自己的问题”8小时,所以它在评论中)。 PDO没有安装在我的服务器上,当我解决这个问题时,重写错误消失了。所以,是的,蛋糕扔了一个错误的错误信息。 – Azuaron

5

问题在于CSS。 如果U不制作蛋糕的默认布局页面,并且在您的新布局中您没有默认的css:cake.generic.css,它将在home.ctp页面上显示此错误。查看home.ctp的代码(查看/页面)并查看id="url-rewriting-warning"<p>,其中此错误消息的cake.generic.css值为display:none

+1

这对我来说完全是问题。我从默认布局中删除了cake.generic.css,并出现错误消息。如果你将它添加到home.ctp中: $ this-> Html-> css('/ css/cake.generic.css',null,array('inline'=> false));错误消息将消失。 –

0

对我来说问题是在另一个答案中提到的CSS问题。

如果您在默认布局更改CSS文件,你可能需要以下行 添加到您的新的css文件:只要

#url-rewriting-warning { 
    display:none; 
} 

...如重写出现在所有被工作其他方法。