Twig генерирует слишком длинный URL-адрес, что приводит к сбою браузера

У меня действительно странная проблема.

Я разрабатываю локально портфолио на основе Silex и Twig через виртуальную машину. Сначала я обращался к нему так: 192.168.56.2/pfsilex и все работало нормально.

Я создал виртуальный хост и соответствующую запись в своем файле хоста, и я все еще могу получить доступ к своему веб-сайту и перемещаться между страницами, но через несколько секунд на странице браузер просто падает (пробовал с Chrome, FF и IE).

Сначала я подумал, что это какой-то скрипт, поэтому отключил JavaScript. Ничего не изменилось. После проверки error.log от Apache у меня были странные записи: «Запрос URI слишком длинный». Очень странно, учитывая, что мои URI очень короткие. Следующее, что нужно сделать, это проверить access.log, и да, URI слишком длинные:

192.168.56.1 - - [28/Jan/2013:22:37:40 +0100] "GET /[type:protected]%20=%3E%200%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20[lineno:protected]%20=%3E%201%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20[1]%20=%3E%20Twig_Token%20Object%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20[value:protected]%20=%3E%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20[type:protected]%20=%3E%202%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20[lineno:protected]%20=%3E%207%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20[2]%20=%3E%20Twig_Token%20Object%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%20%20%20%20%20%20%20%20%20%20%20%20%20%20%" 414 540 "-" "-"

В этом URI мы можем заметить дважды параметр с именем «Twig_Token», который позволяет мне предположить, что это проблема Twig, но, поскольку он полностью работает без виртуального хоста, я немного растерялся. Я не передаю никакие параметры get в свои представления (по крайней мере, так кажется, но я новичок в Silex), только аргументы при возврате шаблона.

Я не думаю, что это происходит непосредственно от ветки.

Вот мой vhost:

<VirtualHost *:80>
        ServerName portfolio.dev
        DocumentRoot /var/www/pfsilex/
        <Directory /var/www/pfsilex/>
                Options -Indexes
                AllowOverride All
                Order Deny,Allow
                Allow from All
        </Directory>
</VirtualHost>

Мой .htaccess:

<ifModule mod_rewrite.c>
    Options -MultiViews

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

И мой хозяин:

192.168.56.2    portfolio.dev

person DevAntoine    schedule 29.01.2013    source источник
comment
Какой код генерирует указанный выше URL?   -  person Maerlyn    schedule 29.01.2013
comment
Я не знаю. Я просто запрашиваю / и у меня есть метод /, выполняющий SQL-запрос, а затем передающий результат в представление, вот и все.   -  person DevAntoine    schedule 29.01.2013
comment
В вашем вопросе недостаточно информации, чтобы помочь. Для начала вы должны найти код, о котором я спрашивал. Вы должны быть в состоянии легко найти его, сравнив свои файлы ветки и вывод html вашей индексной страницы.   -  person Maerlyn    schedule 29.01.2013
comment
Я знаю, какой код возвращает соответствующие представления. Я не пишу ничего, что генерирует такой URL.   -  person DevAntoine    schedule 29.01.2013
comment
Тем не менее, есть какая-то отсылка к нему. Вы проверили свой вывод html, как я предложил?   -  person Maerlyn    schedule 29.01.2013
comment
Да и ссылку не могу найти :/   -  person DevAntoine    schedule 30.01.2013
comment
Я добавил свой vhost, .htaccess и host для более подробной информации.   -  person DevAntoine    schedule 31.01.2013


Ответы (1)


К Твигу это не имело никакого отношения.

На самом деле у меня был общий маршрут, перехватывающий все, что обслуживается через «/», чтобы загружать страницы из БД.

Но это означает, что он также перехватывал каждый статический файл, и когда этого файла не было, метод выдавал большую трассировку стека.

Дело в том, что у меня не было favicon.ico, но каждый браузер все равно пытался его загрузить. Сетевая консоль Chrome не показывает загрузку этого ресурса, я смог отладить его с помощью Firefox, который его показывает.

person DevAntoine    schedule 16.05.2013