Почему моя мода не переписывает правила работы под APACHE2 / Debian / VirtualMin - PullRequest
0 голосов
/ 15 января 2011

Разработав множество сайтов с CodeIgniter, я обычно включаю файл .htaccess для удаления компонента «index.php» из URL.

Никогда раньше проблем не было.

Мойновый сайт использует мой «стандартный» файл .htaccess

.htaccess

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|uploads)
RewriteRule ^(.*)$ /index.php/$1 [L]

Правило перезаписи должно принимать любой запрос, который не начинается с «index.php» или «загрузки»и добавьте его в конец файла index.php, например:

1: http://mysite.com/controller -> http://mysite.com/index.php/controller

2: http://mysite.com/anothercontroller-> http://mysite.com/index.php/anothercontroller

На моем сервере разработки (MAMP) он работает, как и ожидалось, однако я пытаюсь загрузить его на сервер, используя: Apache2 с виртуальными хостами, контролируемыми VirtualMin в Debian Lenny

mod_rewrite запущен и работает на этом сервере, так как работают простые правила, такие как:

RewriteRule ^old.html$ new.html

Журналы ошибок apache, кажется, не показывают ничего плохого.

Есть идеипочему это не будет работать на сервере apache2 / debian / virtualmin (или как включить переписывание журналов для виртуальных хостов с помощьюVirtualMin, чтобы я мог анализировать дальше?)

Cheers:)

EDIT Мне удалось выяснить, как повысить уровень ошибок для отладки в VirtualMin- вот вывод - кажется, я получаю рекурсию ... ??

[Sat Jan 15 09:11:52 2011] [error] [client 110.174.208.166] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
[Sat Jan 15 09:11:52 2011] [debug] core.c(3063): [client 110.174.208.166] r->uri = /index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/
[Sat Jan 15 09:11:52 2011] [debug] core.c(3069): [client 110.174.208.166] redirected from r->uri = /index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/
[Sat Jan 15 09:11:52 2011] [debug] core.c(3069): [client 110.174.208.166] redirected from r->uri = /index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/
[Sat Jan 15 09:11:52 2011] [debug] core.c(3069): [client 110.174.208.166] redirected from r->uri = /index.php/index.php/index.php/index.php/index.php/index.php/index.php/
[Sat Jan 15 09:11:52 2011] [debug] core.c(3069): [client 110.174.208.166] redirected from r->uri = /index.php/index.php/index.php/index.php/index.php/index.php/
[Sat Jan 15 09:11:52 2011] [debug] core.c(3069): [client 110.174.208.166] redirected from r->uri = /index.php/index.php/index.php/index.php/index.php/
[Sat Jan 15 09:11:52 2011] [debug] core.c(3069): [client 110.174.208.166] redirected from r->uri = /index.php/index.php/index.php/index.php/
[Sat Jan 15 09:11:52 2011] [debug] core.c(3069): [client 110.174.208.166] redirected from r->uri = /index.php/index.php/index.php/
[Sat Jan 15 09:11:52 2011] [debug] core.c(3069): [client 110.174.208.166] redirected from r->uri = /index.php/index.php/
[Sat Jan 15 09:11:52 2011] [debug] core.c(3069): [client 110.174.208.166] redirected from r->uri = /index.php/
[Sat Jan 15 09:11:52 2011] [debug] core.c(3069): [client 110.174.208.166] redirected from r->uri = /

Ответы [ 3 ]

1 голос
/ 16 января 2011

VirtualMin настраивает стандартный Apache.Правила переписывания в системе Virtualmin ничем не отличаются от любой другой конфигурации Apache.Веб-сервер в системе Virtualmin - Apache.Так что не ищите «VirtualMin» решение вашей проблемы;эта проблема не связана с Virtualmin (хотя Virtualmin имеет некоторые инструменты пользовательского интерфейса для редактирования и изменения файлов htaccess и правил перезаписи, и тому подобное, вам не нужно их использовать, и они не делают ничего волшебного или отличного от того, что вывы делаете вручную в файле htaccess).

Сравните ваш фактический httpd.conf в вашей системе разработки с вашей производственной системой ... что-то другое.Ваша ОС, скорее всего, будет источником различий в конфигурации по умолчанию.

Убедитесь, что htaccess разрешает все директивы, которые вы пытаетесь использовать, например.Можно ограничить возможности, которые могут настраивать файлы htaccess, и я подозреваю, что конфигурация Debian по умолчанию гораздо более строгая по умолчанию, чем MAMP.Вероятно, вы увидите некоторые ошибки в файле error.log рассматриваемого виртуального хоста или в основном файле error.log, если это так.

0 голосов
/ 17 января 2011

ОК ... через много часов я прихожу к своему решению.

Во-первых, я хотел доказать себе, что это не Debian, поэтому я

  • fresh установил минимальную копию Debian на запасном VPS, который у меня был
  • установлен Apache2
  • включен модуль перезаписи и разрешено переопределение
  • скопированный файл .htaccess и php файлы
  • вуаля! это работало без проблем !!

Хорошо, так что это был не Debian + Apache - Затем я настраиваю виртуальные хосты на VPS под Apache - все еще прекрасно работал

Вернуться к VirtualMin + Apache + Debian

  • резервное копирование файла .conf виртуального хоста
  • скопировано в рабочий файл виртуального хоста Debian + Apache
  • вуаля! это сработало.

Хорошо ... так что это как-то связано с тем, как VirtualMin «записывает» файл .conf виртуального хоста (/etc/apache2/sites-enabled/example-domain.com.conf)

Кропотливо комментируя файл раздел за разделом, я нашел оскорбительные строки в разделе <Directory /home/example-domain/public_html>:

       AddHandler fcgid-script .php
       AddHandler fcgid-script .php5
       FCGIWrapper /home/epeau/fcgi-bin/php5.fcgi .php
       FCGIWrapper /home/epeau/fcgi-bin/php5.fcgi .php5

Закомментируйте эти четыре строки, и все заработало как положено. Почему-то кажется, что использование FastCGI вызывает проблемы.

0 голосов
/ 16 января 2011

Рассматривали ли вы использование FallbackResource ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...