Программное решение досадных мелочей с nginx

Переведя несколько сайтов с Apache на nginx, уже который раз встречаю подводные камни. Один из них — нежелание WordPress понимать код редиректа, другая — постоянные попытки использовать PATHINFO-пермалинки вместо “нормальных” (pretty permalinks).

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

Будучи активированным, плагин устанавливает собственные обработчики событий только в том случае, если сервер работает под управлением nginx, поэтому плагин без вреда (но и без всякой пользы) можно активировать на сервере с Apache — конфликтов не будет.

Текущая версия плагина решает следующие проблемы:

  • Когда WordPress обнаруживает, что используется FastCGI SAPI, он отказывается посылать коды перенаправления, отличные от 302. Это приводит к тому, что при использовании неканонических ссылок PageRank от “неканонической” страницы не передаётся “канонической”. Я где-то читал, что использование кода 302 для склеивания страниц может караться поисковиками; так это или нет, утверждать не берусь. Плагин исправляет этот недочёт WordPress методом, аналогичным описанному здесь: только вместо физического исправления файла функция wp_redirect() просто переопределяется в другом файле.
  • Страница настроек постоянных ссылок полагается на наличие mod_rewrite: если он загружен, используются красивые ссылки, если нет — используются “почти” красивые ссылки вида PATHINFO. Что же, разработчики пользуются Apache. Так как nginx не использует модули и API Apache, функция, проверяющая наличие mod_rewrite, скажет, что он не загружен. Тем не менее, nginx умеет переписывать адреса, и использование PATHINFO не оправдано. Поэтому плагин “заставляет” WordPress думать, что mod_rewrite всё-таки загружен и можно использовать нормальные постоянные ссылки.

Скачать nginx Compatibility 0.1.

Добавить в закладки

Связанные записи

14
Апр
2009

Комментарии к статье «nginx Compatibility: делаем WordPress дружелюбнее к nginx» (5)  »

  1. Loger says:

    Как совпало. Только-только назрел этот вопрос. Посмотрим, как плагин себя покажет. Но заранее спасибо.

  2. [...] для nginx есть лучший способ: плагин nginx Compatibility. [...]

  3. [...] для nginx есть лучший способ: плагин nginx Compatibility. [...]

  4. baron says:

    Works great, thank you

Подписаться на RSS-ленту комментариев к статье «nginx Compatibility: делаем WordPress дружелюбнее к nginx» Trackback URL: http://blog.sjinks.org.ua/wordpress/plugins/539-nginx-compatibility-making-wordpress-friendly-to-nginx/trackback/

Оставить комментарий к записи «nginx Compatibility: делаем WordPress дружелюбнее к nginx»

Вы можете использовать данные тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, Вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя