Назад | Перейти на главную страницу

настроить apache для использования mod_rewrite и mod_dbd с использованием postgreSQL и PHP

Я пытаюсь настроить Apache для использования mod_rewrite и mod_dbd с postgreSQL для веб-сайта клуба. (Kubuntu 18.04, Apache 2.4, PHP 7.2) Я могу найти некоторые подробности для mod_dbd с mySQL, но мне очень трудно использовать эту комбинацию. Любые подсказки, предложения или ответы приветствуются.

Мой текущий файл конфигурации VirtualHost:

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com

    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/html/example.com

    ErrorLog ${APACHE_LOG_DIR}/example.com/error.log
    CustomLog ${APACHE_LOG_DIR}/example.com/access.log combined

    RewriteEngine On
    RewriteMap  myquery    "dbd:SELECT page_name FROM page WHERE page_identifier = (%s)"
    RewriteMap  revquery   "dbd:SELECT page_identifier FROM page WHERE page_name = (%s)"

    RewriteRule ^/([A-Za-z0-9_-]+)$ /index.php?id=${revquery:$1} [L]

    RewriteCond %{QUERY_STRING}          id=(\d+)
    RewriteRule ^/index\.php?         /${myquery:%1}?    [R=307,L]
</VirtualHost>

Я переместил следующее в основной файл конфигурации и добавил еще несколько операторов по умолчанию. (И удалили теги <IfModule>)

DBDriver  pgsql
DBDParams "hostaddr=127.0.0.1 port=5436 dbname=page user=user password=pass"
DBDMin      1
DBDKeep     2
DBDMax     10
DBDExptime 60

Ноты

Изменить 4: - удалено множество деталей относительно ошибок - изначально мне не хватало RewriteEngine On - У меня также была неправильная инструкция RewriteMap. Параметр, по-видимому, должен быть% s, хотя я не совсем уверен, что это значит - я обнаружил, что теги <IfModule> не нужны, и удалил их. Я, вероятно, хочу получить сообщение об ошибке, если эти модули отсутствуют!

Изменить 5: теперь работает !! Детали изменены выше.

Мета-вопрос: следует ли мне вернуть вопрос к более ранней форме и переместить часть этой информации в ответ или просто оставить это так?