Назад | Перейти на главную страницу

Apache 1.3 mod_rewrite .htaccess цикл

Я уже почти сошел с ума от проблем с mod_rewrite, пытаясь развернуть приложение CakePHP на общем хостинге с Apache 1.3. Несмотря на то, что я использую файлы .htaccess по умолчанию, мне кажется, что меня беспокоят циклы перезаписи, и множество проб и ошибок ни к чему не привели.

На сервере мое приложение установлено в:

/home/www/myusername/testing

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

/home/www/hosts/testing.mydomain.com/

Мое приложение CakePHP находится в корневом каталоге внутри «тестирования» со структурой каталога, например:

/home/www/myusername/testing/
    webroot/
    controllers/
    etc...        

Базовый .htaccess выглядит так (по умолчанию):

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

Webroot .htaccess выглядит так:

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

Кажется, все это работает на моем ноутбуке (с Apache 2.2), но дает мне ошибки на сервере, потому что он, кажется, бесконечно переписывает запрос. Если я получаю доступ к любому URI, базовому или нет, я получаю ошибку 403 с этим в журнале ошибок Apache:

Слишком длинное имя файла: доступ к /home/www/hosts/testing.mydomain.com/webroot/home/www/hosts/testing.mydomain.com/webroot/home/www/hosts/testing.mydomain.com/webroot/ home / www / hosts / testing.mydomain.com / webroot / home / www / hosts / testing.mydomain.com / [ПОВТОРИТЬ ДОЛГОЕ ВРЕМЯ ...]

Может ли кто-нибудь увидеть здесь что-нибудь, что привело бы к бесконечному добавлению перезаписи? Я пробовал кучу вещей, например, добавлял RewriteConds, чтобы проверить, что uri еще не содержит webroot, но, похоже, ничего не работает. Я готов поспорить, что это что-то очевидное!

Спасибо.

Должен отказаться от привычки отвечать на свои вопросы, но публикация в SF, кажется, ломает затор. Очевидно, что нужно было добавить к каждому .htaccess соответственно:

RewriteBase /
RewriteBase /webroot

Все еще не уверен особенно Зачем эти директивы необходимы, но я подозреваю, что это как-то связано с каталогом «testing» поддомена, относящимся к корню документа.