Впервые за пять лет разработки интернет-сайтов я столкнулся с весьма неожиданной проблемой, стоившей мне многих часов поиска, нервов и волос на голове. Внезапно я обнаружил, что на новом сайте, который у меня сейчас в разработке на локалхосте, дублируются INSERT запросы к БД. Отправляю один комментарий через форму, а в базу вставляются два. Если вы не знаете, как связана эта проблема с Chrome, favicon.ico и ModRewrite, то добро пожаловать под кат.
Читать полностью »
Рубрика «mod_rewrite»
Не поставил favicon на сайте — получи двойной трафик от Chrome
2016-09-07 в 13:59, admin, рубрики: Apache, favicon.ico, Google Chrome, htaccess, mod_rewrite, mysql, php, Разработка веб-сайтовДвуликий REQUEST_URI или в поисках корректного HTTP/1.1 сервера
2013-06-18 в 5:45, admin, рубрики: Apache, HTTP/1.1, mod_rewrite, php, Веб-разработка, метки: HTTP/1.1, mod_rewriteВы знаете, чем отличается %{REQUEST_URI} в Apache mod_rewrite от $_SERVER["REQUEST_URI"] в PHP?
Сможете в .htaccess на уровне Apache сделать корректную переадресацию 301 с домена с префиксом www или на него?
Для последнего вопроса я и сейчас не смогу предложить решение. Причина в протоколе HTTP/1.1, который пришлось изучить подробнее, когда «изобретал велосипед» (создавал ядро для сайта).
Всё дело в HTTP-заголовке запроса «Host:». При определённых условиях там может быть всё, что угодно, причём сервер должен полностью это проигнорировать согласно HTTP/1.1. Большинство же разработчиков используют значение этого поля, например, для SEO-оптимизаций. Забегая вперёд, скажу, что дополнительный прокси (например, nginx) позволит решить эту проблему.
Для иллюстрации некорректного поведения серверов решил перебрать сайты компаний Хабра. Для дюжины сайтов сделал это вручную, а потом обнаружил, что некоторые сайты на ошибочные запросы отвечают «правильно». После этого была написана небольшая утилита для тестирования, что позволило увеличить количество тестовых шаблонов и проверяемых сайтов.
Что же скрывает REQUEST_URI в HTTP/1.1?
Попытка номер раз создать почти идеальный htaccess
2012-10-13 в 1:49, admin, рубрики: Apache, htaccess, mod_headers, mod_rewrite, Песочница, метки: apache, htaccess, mod_headers, mod_rewrite- Google выше ранжирует сайты, которые загружаются быстрей. - Если на eBay или Amazone увеличить скорость загрузки страниц на 9% они теряют 1% прибыли. - Сделать свой сайт быстрей, что бы сэкономить на клиентском трафике и на числе обращений к серверу.
.htaccess — наш герой
Профессионалы знают, что такое htaccess.
Тем кто собираются уйти с народ.ру на php-хостинг только предстоит узнать, что это такое.
Те кто только что установил свои первые jooml'у или wordpress срочно должны узнать о нашем герое — htaccess
Зачем нам .htaccess ?
Представьте, что вы купили себе хостинг и кажется, почти обрели счастье. Но однажды (а может быть дважды, а может и трижды) ваш сайт перестает отвечать на запросы. Начинает медленно грузиться и вообще вести себя странно. А виртуальный хостинг это такая хитрая штука, что помимо вашего сайта на этом сервере находится ещё два десятка других сайтов. Все они разные по мощности, организованности и трафику. И когда ваш сосед по случайности, а может и умыслу запускает на своем хостинге сложные или избыточные в алгоритмах скрипты, это отзывается и на вас.
Или другой пример. Скажем ваш ресурс начинает набирать популярность, но переезжать на выделенный сервер ещё рано, а мощностей VPS уже не хватает. Вас очень может выручить htaccess.
А ещё htaccess может решить некоторые вопросы с безопасностью вашего сайта.
А ещё…
Ещё немного о mod_rewrite
2012-03-29 в 7:42, admin, рубрики: Apache, apache2, htaccess, mod_rewrite, метки: apache2, htaccess, mod_rewriteИногда, в создаваемых веб-приложениях необходимо использовать фронт-контроллер, использующий человечески-понятную строку запроса. Как правило, начинающие PHP-программисты делают при этом перенаправление всей строки запроса в нужный скрипт. Например, так:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,QSA]
Что эти строчки означают:
1 — включаем mod_rewrite
2 — условие, что все существующие папки не будут обрабатываться регулярным выражением
3 — условие, что все существующие файлы не будут обрабатываться регулярным выражением
4 — регулярное выражение, в нашем случае — при любой строке запроса будет открывать index.php, добавляя её (строку запроса) в $_SERVER['REQUEST_URI'].
Несмотря на то, что данный пример легко найти в любом поисковике за полторы минуты, и он при этом прекрасно работает, хотелось бы отметить один нюанс для начинающих PHP-программистов.
Читать полностью »