【问题标题】:CakePHP 2.0.4 "URL rewriting is not properly configured on your server"CakePHP 2.0.4 “您的服务器上未正确配置 URL 重写”
【发布时间】:2012-01-09 00:36:59
【问题描述】:

我一直在尝试在我的服务器的开发部分设置 CakePHP,但我似乎无法解决“您的服务器上未正确配置 URL 重写”错误。我怀疑我没有使用正确的 RewriteBase 配置 .htaccess 文件。我已经为每个文件尝试了各种不同的 RewriteBase,但我似乎无法找到正确的,并且除了“不工作”之外,Cake 没有给我任何信息(URL 重写错误不会结束在 Cake 的错误日志中)。

我无权访问我的 httpd.conf 文件,但我已将 .htaccess 和 mod_rewrite 与其他框架(Wordpress 和 CodeIgniter)一起使用,没有问题。

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

我的基础服务器路径是:/home/username/public_html/dev/cake/

蛋糕根.htaccess:

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

蛋糕应用目录.htaccess:

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

蛋糕webroot目录.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>

【问题讨论】:

  • 现在我很困惑。如果我删除每个文件中的 RewriteBase,然后添加到 URL(例如,dev.domain.com/cake/stuff),我会收到一条错误消息,指出我尚未创建该控制器,如果我创建了控制器,它似乎可以工作.那么 URL 重写是否有效,但 Cake 的检查失败了?
  • 我也收到了一个错误,因为我的服务器上没有安装 PDO。解决该错误(php.ini 问题)后,URL 重写错误消失了。所以 URL 重写错误可能与 URL 重写没有任何关系,并且可能是由(看似)单独的问题引起的。

标签: apache .htaccess cakephp mod-rewrite cakephp-2.0


【解决方案1】:

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

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

【讨论】:

  • 我解决了我自己的问题(堆栈不允许我在 8 小时内“回答我自己的问题”,所以它在评论中)。我的服务器上没有安装 PDO,当我修复它时,重写错误就消失了。所以,是的,Cake 抛出了一个错误的错误信息。
【解决方案2】:

问题在于 CSS。 如果你没有在蛋糕的默认布局上创建页面,并且在你的新布局中你没有默认的 css: cake.generic.css 它将在页面 home.ctp 上显示此错误。查看 home.ctp(视图/页面)的代码并查看 - &lt;p&gt;id="url-rewriting-warning",此错误消息在 cake.generic.css 值 display:none 中具有。

【讨论】:

  • 这完全是我的问题。我从默认布局中删除了 cake.generic.css 并且出现了错误消息。如果将其添加到 home.ctp 中: $this->Html->css('/css/cake.generic.css', null, array('inline'=>false));错误消息将消失。
【解决方案3】:

您的 vhost.conf 是什么样的?如果您在DocumentRoot 中有正确的路径,则根本不需要在.htaccess 中指定RewriteBase。只需坚持默认设置即可。

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

【讨论】:

  • 我解决了我自己的问题(堆栈不允许我在 8 小时内“回答我自己的问题”,所以它在评论中)。我的服务器上没有安装 PDO,当我修复它时,重写错误就消失了。
【解决方案4】:

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

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

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

...只要重写似乎在所有其他方面都有效。

【讨论】:

    猜你喜欢
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    相关资源
    最近更新 更多