Я пытаюсь настроить 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: теперь работает !! Детали изменены выше.
Мета-вопрос: следует ли мне вернуть вопрос к более ранней форме и переместить часть этой информации в ответ или просто оставить это так?