Apache — как отключить кэширование браузера при отладке htaccess

#apache #.htaccess #firefox #caching

#apache #.htaccess #firefox #кэширование

Вопрос:

Я пытаюсь отладить файл .htaccess. FireFox продолжает кэшировать перенаправления, и я не могу их обойти. Обычно я нажимаю Ctrl F5, но поскольку он уже перенаправил меня на другую страницу, это просто обновляет страницу, на которую я был отправлен, а не URL, который я ввел. Есть ли способ принудительно обновить URL-адрес?

Вот пример:

  • Перенаправление example.com/hi чтобы example.com/hello , протестируйте в FireFox, и это работает
  • Удалите эту строку из .htaccess
  • Введите example.com/hi в FireFox он по-прежнему перенаправляет на example.com/hello
  • Введите example.com/hi в Chrome он не перенаправляет

Вот почему я думаю, что это проблема кэширования браузера, а не кэширования сервера.

Редактировать: похоже, это специфично для FireFox, быстрое решение — использовать Chrome вместо этого. Срок действия кэша истек через час, что слишком долго при попытке отладки.

Комментарии:

1. Одна из самых раздражающих проблем при разработке. Все еще действует в последней версии Chrome. И это более десяти лет спустя.

Ответ №1:

Если вы используете RewriteRule, просто используйте R вместо R=301 . Для других целей вам придется очищать кеш браузера всякий раз, когда вы меняете перенаправление. (Если вы не знаете, как очистить кэш браузера, поиск в Google инструкции должен дать быстрый и простой ответ — или не стесняйтесь комментировать, и я вам помогу.)

Проще говоря, старайтесь избегать 301-х, где это возможно, пока ваши перенаправления не будут работать нормально. Если вы не можете избежать их, приготовьтесь регулярно очищать кэш браузера.

Комментарии:

1. Я не думаю, что это действительно отвечает на вопрос, у меня такая же проблема с Firefox, где, похоже, кэшируется файл htaccess, но независимо от того, сколько раз я очищаю кеш, он не будет обновляться с моей последней версией. Решение на данный момент заключается в использовании Chrome.

2. Браузеры не кэшируют файлы .htaccess (поскольку они их никогда не видят), но они кэшируют перенаправления. Нет абсолютно никаких причин, по которым правильные перенаправления 302 не должны работать должным образом, если только это не ошибка Firefox (в этом случае вы должны подать заявку на них).

3. Временное изменение его на 302, когда вам действительно нужен 301, может быть забыто, когда вы закончите тестирование. Кроме того, просто вполне возможно очистить кэш браузеров.

4. «google it» — это не ответ: [Я погуглил, и я здесь.

5. Понял это для Chrome, см. Мой ответ ниже.

Ответ №2:

Очистка сетевого кэша Firefox работает для меня. Также для 301 перенаправления.

Настройки / Параметры> Дополнительно> Сеть> Кэшированный веб-контент.

Очистить сетевой кэш в настройках Firefox

Смотрите https://support.mozilla.org/en-US/kb/how-clear-firefox-cache

Комментарии:

1. Это сработало и для меня. Мы допустили ошибку с файлом .htaccess и получили 301 в цикле. Chrome сразу увидел изменения, но FF этого не сделал. Сказать, что он не кэширует файл .htaccess, правильно, но FF, похоже, получает свои трусики с изюминкой.

Ответ №3:

В Google Chrome откройте новую вкладку в режиме «Инкогнито», используя:

CTRL-SHIFT-N

Очень полезно для отладки.

Комментарии:

1. Но что, если вы хотите использовать режим без инкогнито. Как затем «очистить» перенаправление htaccess?

Ответ №4:

Я думаю, что здесь стоит подумать на всякий случай, если мой опыт кому-нибудь поможет. Я регулярно переключаюсь между веткой разработки и производства на моем локальном компьютере. Ветвь разработки — это моя локальная среда, а производственная ветвь — для моего удаленного сервера. Единственное различие между двумя средами — это файл .htaccess . Моему удаленному серверу требуется правило перезаписи на случай, если кто-то не вводит «www» перед URL:

 # If www is missing from the beginning of the URL
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
  

Однако это правило перезаписи не работает для моей локальной среды из-за структуры URL. Итак, в моей локальной версии .htaccess я закомментировал правила перезаписи.

Я заметил, что Chrome, похоже, не переходит на мой локальный сервер, чтобы каждый раз получать последний файл .htaccess. Очевидно, что это кэширование перезаписи, потому что, когда я переключаюсь с моей производственной ветки на мою ветку разработки, я получаю что-то похожее на это:

 www.www-local.myurl.local
  

Если я использую Safari, я получаю правильный URL:

 www-local.myurl.local
  

Чтобы решить эту проблему с Chrome, я зашел в Инструменты разработчика> Настройки> Общие> и поставил галочку «Отключить кэш (пока DevTools открыт)»

Если этот флажок установлен, мне просто нужно открыть Dev Tools и перезагрузить, чтобы получить текущий .htaccess.

Ответ №5:

Принудительно очистить кэш htaccess / перенаправления в Google Chrome:

  1. Перейдите в Настройки> Дополнительно> Конфиденциальность> Очистить данные просмотра
  2. Выберите «Кэшированные изображения и файлы»
  3. Нажмите Очистить данные просмотра

Теперь на вашей странице должны быть загружены новые настройки htaccess.

Комментарии:

1. Для этого есть простая ссылка: chrome://settings/clearBrowserData

2. Это должно быть возможно сделать для определенного домена, А НЕ для всего браузера.

Ответ №6:

В Firefox откройте панель инструментов разработчика, нажав Option Command I. Затем нажмите «Настройки» (это маленький значок шестеренки) и в разделе «Дополнительные настройки» поставьте галочку рядом с отключением HTTP-кэша (когда панель инструментов открыта). Это помогло мне.

Ответ №7:

В Chrome вы можете отключить кэш браузера на панели инструментов разработчика

 Command Option C (Mac) or Control Shift C (Windows, Linux, Chrome OS).
  

На Network вкладке вы можете найти Disable cache флажок.
Это работает только тогда, когда открыта панель инструментов разработчика.
введите описание изображения здесь

Ответ №8:

После бесчисленных попыток обновить мой кеш, я решил очистить файлы cookie для своего сайта, я не знаю, почему и как, но это очистило его для меня. Возможно, это что-то специфичное для Magento, но оно может быть более общим.

Ответ №9:

В Google Chrome откройте панель инструментов разработчика. Затем нажмите «Настройки» (это значок с 3 точками) и в разделе «Сеть» установите флажок «Отключить кэш (пока DevTools открыт)».

Ответ №10:

Для Chrome вы можете сделать это для каждой страницы, не очищая весь кэш браузера; просто откройте инструменты разработки (вы можете использовать сочетание клавиш ctrl shift I). Как только он откроется, щелкните правой кнопкой мыши значок перезагрузки и выберите «Очистить кэш и перезагрузить». введите описание изображения здесь

Ответ №11:

Я наконец нашел решение для Chrome:

отключить кэш

В веб-разработчике откройте вкладку «Сеть» и включите «Отключить кэш».

Это сработало для меня.

Ответ №12:

Ну, вы можете просто очистить свой кэш htaccess, используя Firefox addon Clear Cache. Лучше, чем любой CTRL R

https://addons.mozilla.org/en-US/firefox/addon/clear-cache-button/

Комментарии:

1. Это не работает. По сути, это ярлык, но он очищается не иначе, чем методом ctrl r.