我在为CakePHP应用程序内的Wordpress安装设置Lighttpd重写规则时遇到问题。
文件夹结构如下所示:
var/
www/
app/
webroot/
blog/
cake/
vendors/
cakePHP应用程序运行正常。如果我尝试访问http://domain.tld
,则会加载应用首页。任何访问控制器/操作的尝试也可以正常工作。当我尝试加载任何wordpress帖子时会出现问题。访问WP帖子的网址结构如下:http://domain.tld/blog/post/post-slug
我现在/etc/lighttpd/lighttpd.conf
上的内容是
$HTTP["host"] == "domain.tld" {
server.document-root = "/var/www/app/webroot/"
url.rewrite-once = (
"/(css|files|img|js|php)/(.*)" => "/$1/$2",
"^([^\?]*)(\?(.+))?$" => "/index.php?url=$1&$3",
)
}
$HTTP["url"] == "domain.tld/blog/" {
server.document-root = "/var/www/app/webroot/blog/"
url.rewrite-final = (
"^/(wp-admin|wp-includes|wp-content|gallery2)/(.*)" => "$0",
"^/(.*.php)" => "$0",
"^/(.*)$" => "/index.php/$1"
)
}
当我尝试打开博客帖子时,它会打开一个似乎是破蛋糕行为的页面。它加载了蛋糕默认视图(页眉和页脚),但主要部分没有任何内容。这意味着它正在调用控制器/动作。如果我打开调试Configure::write('debug', 2)
以查看发生了什么,我会收到以下错误:
致命错误:第107行的/var/www/cake/libs/i18n.php中找不到“调试器”类
在应用程序的任何其他部分,调试器工作正常。
访问WP帖子只有两种方法。使用默认的WP永久链接设置(domain.tld/blog/?p=123
)或设置server.document-root="/var/www/app/webroot/blog/"
,但在这种情况下,cakePHP应用程序将无法使用。
注意:如果我使用Apache,一切正常。
答案 0 :(得分:1)
我找到了解决方案。
首先,重写。就这么简单:
$HTTP["host"] =~ "domain.tld" {
server.document-root = "/var/www/app/webroot/"
url.rewrite-once = (
"/(css|files|img|js|php)/(.*)" => "/$1/$2",
"^/blog/(.*)$" => "/blog/index.php/$1", // to take care of WP
"^([^\?]*)(\?(.+))?$" => "/index.php?url=$1&$3" // to take care of cakePHP
)
}
现在, Class'Debugger'未找到问题。
这是我已经完成的基本工作。但问题仍然存在。所以这就是诀窍。继续执行上述两个步骤,并将调试设置为零(0)。在/app/config/core.php
Configure::write('debug', 0)
加载任何页面或操作。然后,将调试更改为1.再次加载页面。最后,将调试更改为2.加载页面,您将不再看到该错误。
听起来很疯狂,但它在这里起作用。如果我在第一次加载页面时将调试设置为2,则会引发错误。
如果这不起作用,您可能想尝试许多网站上提到的解决方案。在导致错误的行之前添加App::import('Core', 'Debugger')
。它在这里不起作用,但许多人说它有效。