Случайное проигрывание переменных сеанса только в Google Chrome & URL Rewriting

Используя Google Chrome, я, по-видимому, теряю / искажаю данные сеанса при навигации между страницами (PHP 5.0.4, Apache 2.0.54). Веб-сайт отлично работает в IE7 / 8, Firefox, Safari & Opera. Проблема только в Google Chrome.

Я сузил проблему. Я использую дружественные поисковые URL и скрываю свой фронт-контроллер (index.php) через файл .htaccess. Таким образом, URL-адрес выглядит следующим образом: www.domain.com/blah/blah/ Вот содержимое файла .htaccess:

  • PHP Jquery Ajax вызывается сетью :: ERR_EMPTY_RESPONSE
  • Недействительный JSON в Chrome, без проблем в Firefox (так странно!)
  • Ошибка Codeigniter + Chrome (ERR_RESPONSE_HEADERS_TOO_BIG). Как решить?
  • XML-рендеринг Google Chrome в виде текста для RSS-канала
  • XMLHttpRequest; Запросы на кросс-начало поддерживаются только для схем протокола: http, data, chrome, chrome-extension, https, chrome-extension-resource
  • Создайте файл Google Chrome Crx с помощью PHP
  • Options +FollowSymlinks RewriteEngine on #allow cool urls RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*) index.php [L] #allow to have Url without index.php 

    Если я удалю файл .htaccess и поставлю передний контроллер по URL-адресу: www.domain.com/index.php/blah/blah/, Chrome работает отлично.

    Любые мысли идеи? Я думаю, что это какая-то проблема, связанная с тем, как Chrome определяет, какой cookie следует использовать и отправлять на сервер? Это происходит в Chrome 4 и 5. Спасибо!

  • Запустить процесс с выходом в реальном времени в PHP
  • Сравнение производительности производительности Apache и IIS
  • .htaccess переписать дружественные URL-адреса
  • Блокирующие серверы TOR
  • Длинные запросы блокируют другие запросы в Apache и PHP
  • Apache 2 multiviews и 406 ошибка для изображения / * запрос
  • 4 Solutions collect form web for “Случайное проигрывание переменных сеанса только в Google Chrome & URL Rewriting”

    У меня была такая же проблема, и для ее исправления мне нужно было только создать favicon.ico и поместить его в webroot – иначе я мог бы видеть, как Fiddler использовал 404 для этого с каждым запросом страницы из Chrome (несмотря на то, что я на самом деле не связывал к значку в разметке страницы).

    На мой взгляд, это явно ошибка в Chrome, так как отсутствие favicon не должно влиять на данные сеанса.

    Оказывается, проблема связана с содержимым моего файла .htaccess. Это решило проблему:

     #<IfModule mod_rewrite.c> ############################################ ## enable rewrites Options +FollowSymlinks RewriteEngine on ############################################ ## always send 404 on missing files in these folders RewriteCond %{REQUEST_URI} !^/.*(themes|wysiwyg|images|js)/ ############################################ ## always send 404 on missing favicon RewriteRule ^favicon.ico$ favicon.ico [L] ############################################ ## never rewrite for existing files, directories and links RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l ############################################ ## rewrite everything else to index.php RewriteRule .* index.php #</IfModule> 

    Попробуйте использовать;

      session_set_cookie_params(0, '/', '.domain.com'); 

    для обеспечения соблюдения параметров cookie сеанса. Удалите префиксный период, если вы применяете «нет www» или не используете субдомены.

    Вы также можете попробовать вызвать session_write_close() в конце скрипта, чтобы заставить PHP писать и закрывать сеанс тогда и там (это особенно удобно, когда вы запускаете заголовки перенаправления сразу после записи данных сеанса).

    ОБНОВИТЬ:

    Попробуйте использовать это в своем .htaccess ;

     RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] 

    Похоже, эта проблема появилась в браузерах Chrome в последнее время. У меня был сайт, работающий в течение 6 месяцев без каких-либо проблем, и вчера у меня начались проблемы с перезаписыванием данных сеанса. С помощью скрипача я увидел, что хром пытался загрузить значок. Моя проблема заключалась также в том, что у меня была ссылка на «favicon.ico», а не на «/favicon.ico», поэтому chrome добавила favicon.ico к моему querystring, например. /product/abc/favicon.ico, что привело к загрузке страницы дважды, во второй раз переписывая данные сеанса. Так что мое исправление было:

    1. изменить ссылку ref на "/favicon.ico"
    2. Загрузил значок
    3. добавлено это в .htaccess: RewriteRule ^ favicon.ico $ favicon.ico [L]

    Последний шаг был упомянут в нескольких ответах, и я бы счел его хорошим ответом, за исключением того, что мне не удалось, потому что ссылка была «favicon.ico».

    PHP is the Best Programming Language in the world.