Lighttpd переписать для Wordpress внутри CakePHP - PullRequest
0 голосов
/ 28 ноября 2011

У меня проблемы с настройкой правила перезаписи Lighttpd для установки Wordpress, которая находится внутри приложения CakePHP.

Структура папок выглядит следующим образом:

var/
    www/
        app/
            webroot/
                blog/
        cake/
        vendors/

Приложение cakePHP работает отлично. Если я пытаюсь получить доступ к http://domain.tld, он загружает главную страницу приложения. Любая попытка доступа к контроллеру / действию также работает нормально. Проблема возникает, когда я пытаюсь загрузить любой пост WordPress. Структура URL для доступа к посту 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), чтобы увидеть, что происходит, я получаю следующую ошибку:

Неустранимая ошибка: класс «Отладчик» не найден в /var/www/cake/libs/i18n.php в строке 107

В любой другой части приложения отладчик работает нормально.

Есть только два способа получить доступ к сообщению WP. Используя стандартные настройки постоянной ссылки WP (domain.tld/blog/?p=123) или настройку server.document-root="/var/www/app/webroot/blog/", но в этом случае приложение cakePHP будет недоступно.

Примечание : все работает нормально, если я использую Apache.

1 Ответ

1 голос
/ 29 ноября 2011

Я нашел решение.

Проблема перезаписи

Во-первых, перезапись .Это так просто:

$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
    )
}

Проблема класса «Отладчик»

Теперь Класс «Отладчик» не найден проблема.

  1. chmod 777 / var / www /app / tmp /
  2. Удалите любой временный файл из той же папки

Это основное, что я уже сделал.Но проблема все еще была.Так вот в чем и состоит хитрость.Выполните два шага, описанных выше, и установите отладку на ноль (0).Вкл. /app/config/core.php

Configure::write('debug', 0)

Загрузить любую страницу или действие.Затем измените отладку на 1. Загрузите страницу снова.Наконец, измените отладку на 2. Загрузите страницу, и вы больше не увидите эту ошибку.

Звучит безумно, но это сработало.Если бы я установил для отладки значение 2 при первой загрузке страницы, это привело бы к ошибке.

Если это не сработает, вы можете попробовать решение, которое упоминается на многих сайтах.Добавьте App::import('Core', 'Debugger') перед строкой, которая вызывает ошибку.Это не сработало, но многие говорили, что это работает.

...