Apache httpd não implementa atualizações para uma configuração de redirecionamento 301

Apache httpd não implementa atualizações para uma configuração de redirecionamento 301

Estou tendo problemas para atualizar um redirecionamento que funcionava anteriormente em meu servidor Apache (httpd, rhel). Eu já tinha tido:

RedirectMatch 301 ^/apidocs/ /old/specific/path/apidocs/

que funcionou.

Eu mudei para:

RedirectMatch 301 ^/apidocs/ /new/specific/path/apidocs/

e agora não funciona. Ou seja, quando tento acertar o simpleshttp://<host>/apidocsurl, recebo um 301 com o local de redirecionamento antigo nos cabeçalhos de resposta, seguido por um 404 no navegador, quando ele tenta GET do local antigo. O log de erros do httpd corrobora que o navegador tentou OBTER o diretório antigo:

File does not exist: /var/www/html/old

Fazer service httpd reloadou service httpd force-reloadproduz apenas a seguinte linha de saída:

Reloading httpd:

...então é presumivelmente bem sucedido. Também,

(1) quando o httpd é iniciado, seu log de erros não apresenta reclamações.
(2) correr apachectl configtestproduz Syntax OK.
(3) correr httpd -tproduz Syntax OK.
(4) Parei e iniciei o httpd 'graceful' várias vezes, sem sucesso.
(5) Tentei usar apachectl -k stop/start, sem sucesso.

(6) Também tentei limpar o cache usando htcacheclean, sem sucesso.
vale a pena notar aqui que anteriormente, embora os módulos mod cache e mod cache disk estivessem carregados, não havia configuração do CacheRoot & etc, então adicionei o seguinte:

CacheEnable disk /
CacheRoot "/var/cache/httpd"
CacheDirLength 2
CacheDirLevels 2

...e posteriormente verifiquei que estava sendo preenchido e limpei com htcacheclean.

Onde mais esses dados obsoletos do 301 poderiam ser perpetuados?

Obrigado! Hans

Responder1

primeira coisa, você precisa resolver o erro de sintaxe, então execute httpd -t, assim (exceto para a parte echo), desta forma você pode descobrir qual arquivo de configuração contém erro de sintaxe:

[root@wcmisdlin02 conf.d]# echo blah >> php.conf 
[root@wcmisdlin02 conf.d]# httpd -t
AH00526: Syntax error on line 33 of /etc/httpd/conf.d/php.conf:
Invalid command 'blah', perhaps misspelled or defined by a module not included in the server configuration
[root@wcmisdlin02 conf.d]# 

De acordo commod_alias - Servidor HTTP Apache versão 2.4, você RedirectMatchparece bem. Você está acessando o Virtual Host certo?

Responder2

...então a "resposta" é essaa premissa da pergunta está errada. Ou seja, o apache httpd está fazendo seu trabalho corretamente. A verdadeira questão é queexiste uma camada de cache em algum lugar entre o httpd no servidor e minha máquina local. Tomo como prova disso que:
1. um wget executado em minha máquina local é redirecionado para o URL de redirecionamento antigo, enquanto
2. um wget executado no servidor é redirecionado corretamente para o novo URL de redirecionamento
e os logs de acesso para o primeiro se parece com:

"GET /old/specific/path/apidocs/ HTTP/1.1" 404

enquanto este último produziu:

"GET /apidocs/ HTTP/1.0" 301
"GET /new/specific/path/apidocs/ HTTP/1.0" 200

informação relacionada