CakePHP 2.0默认页面没有布局,显示mod_rewrite错误

时间:2011-10-30 14:42:36

标签: php apache .htaccess cakephp

我刚刚在我的服务器上配置了cakePHP 2.0,但是默认页面没有应用布局和css。它还会显示以下错误。

  

您的服务器上未正确配置URL重写。 1)帮我配置它2)我不/不能使用URL重写

我已经发现no-layout / css问题可能与URL重写错误有关,所以我按照this Cookbook page中描述的步骤进行了操作,但它没有任何效果。 URL重写错误仍然可见,默认页面仍然缺少其布局和CSS样式。

一些信息

  • php.ini中的显示错误在
  • html头中包含的css和favicon.ico给出了404
  • 这两个文件都在webroot文件夹中
  • webroot文件夹的位置是/ admin / app / webroot /
  • phpinfo()表示已加载mod_rewrite模块
  • 文件夹结构如下:
    • html(apache根文件夹)
      • 管理员
        • 应用
          • ...
          • 根目录
            • CSS
              • cake.generic.css
          • ...
        • LIB
        • ...
错误日志仅显示

[error] [client 212.***.***.***] File does not exist: /var/www/html/admin/css, referer: http://***.nl/admin/
[error] [client 212.***.***.***] File does not exist: /var/www/html/admin/img, referer: http://***.nl/admin/ 
[error] [client 212.***.***.***] File does not exist: /var/www/html/admin/favicon.ico

/admin/app/webroot/.htaccess

的内容
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /admin/
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

/admin/app/.htaccess

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

1 个答案:

答案 0 :(得分:2)

我最初发布此评论作为评论,但由于这似乎与OP有关,我将把它作为正式答案。样式表链接给出了404错误。

没有布局,你的意思是没有HTML? cake.generic.css文件是否正确加载?如果模块已正确加载,则mod_rewrite消息的div将被默认CSS隐藏,但如果未包含CSS,则无论如何都可能会看到它。

我在1.3安装上遇到过这个问题,所以我不确定它是否适用于2.0。

至于404错误,这可能是一个多余的问题:但是,webroot目录中的favicon.ico和cake.generic.css中的/webroot/css/是否真的存在?

此外,您是在子目录中运行应用程序,还是在Web服务器的HTTP根目录中的app目录?

如果您正在子目录中运行该应用程序,您可能希望更改.htaccess目录(或其所谓的任何目录)的app中的RewriteBase,其中模型,控制器等是存储和webroot目录。

/app目录的.htaccess:

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

/app/webroot

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

将YOUR_APP_DIR更改为您网络服务器上的相关路径。 Here's more在Cake的特定安装上,它可能适用于您的设置。

修改 .htaccess看起来不正确。我认为它应该是:/admin/app/在两个文件中。

如果这不起作用,您可以调查default.ctp中调用CSS的方式。在default.ctp中对CSS的调用格式如下: <?php echo $this->Html->css(array("/css/cake.generic"), "stylesheet", array("media"=>"screen")); ?>

您还可以通过在default.ctp中放置具有该名称的文件来覆盖库存/View/Layouts,可以找到Cookbook示例here。完成后,您可以尝试使用css文件的完整路径,看看服务器是否正确地提供了它。