
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 reload
ou service httpd force-reload
produz 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 configtest
produz Syntax OK
.
(3) correr httpd -t
produz 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ê RedirectMatch
parece 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