Вопрос или проблема
Я пытаюсь настроить красивые постоянные ссылки для работы с OpenBSD httpd.
Однако я не могу протестировать свои настройки, потому что WordPress предлагает только опцию почти красивых постоянных ссылок.
Что использует WordPress, чтобы определить, следует ли предлагать красивые постоянные ссылки в качестве опции настройки?
Учитывая, что httpd является очень незначительным веб-сервером по доле рынка и не поддерживал переписывание до OpenBSD 6.6, неудивительно, что WP не был написан с учётом этого.
Основная структура, необходимая WP, заключается в том, что если запрос не относится к существующему файлу или каталогу, его нужно переписать на index.php в корне сайта. Вам придется реализовать это самостоятельно. Руководство на openbsdhandbook.com упоминает только OpenBSD 6.4, поэтому, очевидно, там нет информации о том, как реализуется переписывание.
В противном случае, возможно, стоит рассмотреть использование поддерживаемого и лучше задокументированного веб-сервера, такого как nginx.
Ответ или решение
WordPress использует несколько проверок, чтобы определить, поддерживает ли сервер "красивые" постоянные ссылки (pretty permalinks) и может ли он правильно обрабатывать их. Как правило, WordPress определяет возможность использования красивых постоянных ссылок на основе наличия поддержки модуля переписывания URL (URL rewriting) на сервере и конфигурации .htaccess
для Apache или аналогичных конфигураций для других веб-серверов.
1. Проверка модуля переписывания
WordPress ожидает, что сервер будет использовать правила переписывания URL, чтобы перенаправлять запросы. Это обычно достигается через модуль mod_rewrite
для Apache или настройки rewrite
для Nginx. На серверах, которые не поддерживают такие модули или где они не активированы, WordPress будет предлагать альтернативные, менее оптимизированные постоянные ссылки (например, с использованием параметров запроса вместо чистых URL).
2. Обработка запросов
Когда WordPress получает запрос, он определяет, существует ли запрашиваемый файл или директория. Если запрашиваемый ресурс отсутствует, то происходит редирект на index.php
, где WordPress обрабатывает внутренние перенаправления и маршрутизацию. Чтобы это работало, сервер должен быть настроен таким образом, чтобы все запросы, которые не соответствуют существующему файлу или директории, перенаправлял на index.php
. На большинстве серверов это происходит через конфигурационные файлы, такие как .htaccess
для Apache. В OpenBSD httpd, например, такая настройка будет требовать ручного вмешательства в конфигурацию, не имея стандартных решений, как в других, более распространенных веб-серверах.
3. Соответствие серверной конфигурации
На более ранних версиях OpenBSD (до 6.6) поддержка переписывания URL отсутствовала, что, как справедливо замечено, ограничивает возможности WordPress в его настройках постоянных ссылок. Серверная часть, работающая на OpenBSD httpd, должна иметь соответствующие правила, позволяющие перезаписывать URL, чтобы WordPress мог корректно управлять структурой постоянных ссылок.
4. Варианты решения проблемы
Если ваш веб-сервер не поддерживает необходимые функции, вам может потребоваться сделать следующее:
- Изменение конфигурации: Настроить сервер для поддержки правил переписывания.
- Изучение альтернатив: Рассмотреть использование альтернативных веб-серверов, таких как Nginx или Apache, которые имеют лучшее документирование и поддержку со стороны WordPress.
- Ручная реализация: Если вы настроены использовать OpenBSD httpd, придется вручную настроить правила переписывания в конфигурации сервера.
Заключение
В конечном счете, выбор веб-сервера критически важен для работы с красивыми постоянными ссылками в WordPress. Если OpenBSD httpd не поддерживает необходимые функции переписывания (что может потребовать дополнительной настройки и знаний), возможно, имеет смысл рассмотреть использование более распространенных и поддерживаемых веб-серверов, чтобы избежать осложнений с конфигурацией и производительностью в будущем.