RewriteMap dbm .dir .pag

4

Eu tenho trabalhado com o RewriteMap dbm, mas eu consegui a versão em texto funcionar, mas não consigo descobrir como ou por que estou recebendo o erro descrito abaixo.

O host virtual:

<VirtualHost *:80>
DocumentRoot /var/www/sites/me
ServerName domain.com
RewriteEngine On
RewriteMap examplemap "dbm:/etc/httpd/conf/redirects.db"
RewriteRule (.*) ${examplemap:$1}
</VirtualHost>

Quando tento reiniciar o httpd, ele gera um erro:

[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

De onde vem o .dir?

Eu criei um arquivo httxt2dbm como redirecionados.db.dir e isso fez com que o erro desaparecesse.

Alguns problemas, se eu editar a linha:

RewriteMap examplemap "dbm:/etc/httpd/conf/redirects.db"

Para:

RewriteMap examplemap "dbm:/etc/httpd/conf/redirects.db.dir"

Eu recebo:

RewriteMap: file for map examplemap not found:/etc/httpd/conf/redirects.dbm.dir.dir

Segundo problema:

[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.pag

De onde vem o arquivo de pag?

Como faço isso feliz e trabalho?

    
por Anthony Fornito 19.09.2018 / 22:37

1 resposta

0

Yes only one file was created:

httxt2dbm -f db -i /etc/httpd/conf/redirects.txt -o /etc/httpd/conf/redirects.db

Se você estiver especificando db (ou seja, Berkeley DB) como o tipo de DBM ( -f DBM_TYPE argument) ao criar o arquivo, provavelmente deve incluir esse tipo de dbm na diretiva RewriteMap também. .dir e .pag não são arquivos Berkeley DB, então suspeito que o Apache esteja usando outro padrão (talvez SDBM ?) para o seu mapa de reescrita.

Por exemplo:

RewriteMap examplemap "dbm=db:/etc/httpd/conf/redirects.db"

Como alternativa, remova o argumento -f db ao criar seu arquivo de dados (usando httxt2dbm ) para que o Apache use seu padrão . (A menos que você queira especificamente arquivos Berkeley DB.)

    
por 20.09.2018 / 15:24