配置 apache 使用 mod_rewrite 和 mod_dbd 使用 postgreSQL 和 PHP

配置 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 [email protected]
    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:现在可以工作了!! 以上详细信息已更改。

元问题:我是否应该将问题恢复为早期形式并将其中一些信息移至答案,还是保持原样?

相关内容