我一直在使用RewriteMap dbm,我能够使用文本版本,但是无法弄清楚我是如何或为什么会得到下面描述的错误。
虚拟主机:
DocumentRoot /var/www/sites/me
ServerName domain.com
RewriteEngine On
RewriteMap examplemap "dbm:/etc/httpd/conf/redirects.db"
RewriteRule (.*) ${examplemap:$1}当我试图重新启动httpd时,它会抛出一个错误:
[root@mail me]# httpd -t
AH00526: Syntax error on line 367 of /etc/httpd/conf/httpd.conf:
RewriteMap: file for map examplemap not found:/etc/httpd/conf/redirects.dbm.dir.dir从哪里来?
我创建了一个httxt2dbm文件redirects.db.dir,这使得错误消失了。
几个问题,如果我编辑行:
RewriteMap examplemap "dbm:/etc/httpd/conf/redirects.db"至:
RewriteMap examplemap "dbm:/etc/httpd/conf/redirects.db.dir"我得到:
RewriteMap: file for map examplemap not found:/etc/httpd/conf/redirects.dbm.dir.dir第二个问题:
[root@mail me]# tail -f /var/log/httpd/error_log
[Wed Sep 19 20:32:42.282075 2018] [rewrite:error] [pid 4136] (2)No such file or directory: [client 50.76.6.29:56744] AH00663: mod_rewrite: can't access DBM RewriteMap file /etc/httpd/conf/redirects.db.pagpag文件从哪里来?
我怎么才能让这件事变得快乐和有效呢?
发布于 2018-09-20 13:24:17
是的,只创建了一个文件: httxt2dbm -f db -i /etc/httpd/conf/redirects.txt -o /etc/httpd/conf/redirects.db
如果您指定了db (即。作为DBM类型(-f DBM_TYPE参数),在创建文件时,您可能也应该将此dbm类型包含在RewriteMap指令中。.dir和.pag不是伯克利DB文件,所以我怀疑Apache正在使用另一种默认(可能是SDBM?)为了你重写的地图。
例如:
RewriteMap examplemap "dbm=db:/etc/httpd/conf/redirects.db"或者,在创建数据文件(使用-f db )时,删除httxt2dbm参数,以便Apache使用其默认参数。(除非您特别需要伯克利DB文件。)
https://serverfault.com/questions/931763
复制相似问题