Я использую vhost_alias для выполнения mass virtual hosting и имею несколько сайтов, использующих mod_rewrite для управления их передними контроллерами.массовый виртуальный хостинг и правила перезаписи, вызывающие рекурсивное внутреннее перенаправление
Я не думаю, что это особая проблема symfony, но я использую symfony.
Теперь большинство запросов, которые соответствуют любому переписывает правило, в конечном итоге в infnite перенаправлять цикл, который вызывает ошибку HTTP 500.
Я проверил лог-файлы и это то, что я нашел:
(3) [perdir /home/user/www/mysite/] strip per-dir prefix: /home/user/www/mysite/app_dev.php -> app_dev.php
(3) [perdir /home/user/www/mysite/] applying pattern '^$' to uri 'app_dev.php'
(3) [perdir /home/user/www/mysite/] strip per-dir prefix: /home/user/www/mysite/app_dev.php -> app_dev.php
(3) [perdir /home/user/www/mysite/] applying pattern '^(.*)$' to uri 'app_dev.php'
(2) [perdir /home/user/www/mysite/] rewrite 'app_dev.php' -> 'web/app_dev.php'
(3) [perdir /home/user/www/mysite/] add per-dir prefix: web/app_dev.php -> /home/user/www/mysite/web/app_dev.php
(1) [perdir /home/user/www/mysite/] internal redirect with /home/user/www/mysite/web/app_dev.php [INTERNAL REDIRECT]
(3) [perdir /home/user/www/mysite/] add path info postfix: /home/user/www/mysite/home -> /home/user/www/mysite/home/user/www/mysite/web/app_dev.php
(3) [perdir /home/user/www/mysite/] strip per-dir prefix: /home/user/www/mysite/home/user/www/mysite/web/app_dev.php -> home/user/www/mysite/web/app_dev.php
(3) [perdir /home/user/www/mysite/] applying pattern '^$' to uri 'home/user/www/mysite/web/app_dev.php'
Как вы можете видеть, что после внутренней строки перенаправления абсолютный путь становится частью согласованного URI, этот uri, конечно, не соответствует никаким файлам и обрабатывается снова как совершенно новый uri, это приводит к новому абсолютному пути, добавленному на URI. Этот процесс повторяется до достижения установленного предела.
Я попытался это без конфигурации виртуальных хостов (который работает отлично) и заметил, что перед внутренним перенаправлением есть новая линия:
(2) [perdir /home/user/www/mysite/] strip document_root prefix: /home/user/www/mysite/web/app_dev.php -> /web/app_dev.php
(1) [perdir /home/user/www/mysite/] internal redirect with /web/app_dev.php [INTERNAL REDIRECT]
После этого перенаправлять фактический файл сопоставляются и нет никаких проблем ,
Не следует ли лишить виртуальный документ_и_у в виртуальной конфигурации, а также в обычной конфигурации?
Я не понимаю, почему корень виртуального документа считается частью URL во внутреннем перенаправлении. Это кажется неправильным.
Не хватает ли какой-либо опции конфигурации?
Вот мой файл .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ web/ [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ web/$1 [QSA,L]
</IfModule>
Вот мой Apache конфигурационный файл:
Ниже декларации VirtualDocumentRoot существуют некоторые закомментирована правила перезаписи.
Это была попытка заменить VirtualDocumentRoot на правила перезаписи, но у него была аналогичная проблема: в strip_wow был указан/home/user/www, оставляя имя хоста частью URL-адреса, поэтому я получаю такая же рекурсивная проблема.
Так что я хотел бы знать, если кто-то когда-либо делал mod_vhost_alias работу с mod_rewrite. Я действительно пытался искать везде (даже Google!), Но не мог найти много информации об этом.
ли файл '/ главная/пользователя/WWW/MySite/веб/app_dev.php' существует? –
Да, все есть. Это клон репозитория, который довольно хорошо работает везде где-то еще (в Интернете и других машинах, где я не использую массовый виртуальный хостинг) – Jens