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

1

Estou com um problema ao atualizar um redirecionamento que funcionava anteriormente em meu servidor apache (httpd, rhel). Eu já tinha:

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 acessar o URL link simples, recebo um 301 com o antigo local de redirecionamento nos cabeçalhos de resposta, seguido por um 404 no navegador, quando ele tenta obter do local antigo. O log de erro 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 única de saída:

Reloading httpd:

... então é presumivelmente bem sucedido. Além disso,

(1) quando o httpd é iniciado, seu log de erros não tem reclamações.
(2) executando apachectl configtest produz Syntax OK .
(3) executando httpd -t produz Syntax OK .
(4) Eu parei e 'graciosa' comecei o httpd várias vezes, sem sucesso.
(5) Eu tentei usar o apachectl -k stop / start, sem sucesso.

(6) Eu também já tentei limpar o cache usando htcacheclean, sem sucesso.
digno de nota aqui que anteriormente, embora os módulos de cache mod e cache de mod foram carregados , não houve configuração do CacheRoot & etc, assim eu adicionei o seguinte:

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

... e subsequentemente verificou que estava sendo preenchido e limpou com htcacheclean.

Onde mais esses dados obsoletos podem ser perpetuados ??

Obrigado! Hans

    
por Hans 30.04.2015 / 17:08

2 respostas

0

... então a "resposta" é que a premissa da pergunta está errada. Ou seja, o apache httpd está fazendo seu trabalho corretamente. A questão real é que existe 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 a partir da minha máquina local é redirecionado para o antigo redirect-url, enquanto o 2. um wget executado a partir do servidor é redirecionado corretamente para o novo redirect-url,
e os registros de acesso para o primeiro se parecem com:

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

enquanto o último produziu:

"GET /apidocs/ HTTP/1.0" 301
"GET /new/specific/path/apidocs/ HTTP/1.0" 200
    
por 30.04.2015 / 21:28
0

primeiro, primeiro, você precisa resolver o erro de sintaxe, então execute httpd -t , assim (exceto para echo part), dessa forma você pode descobrir qual arquivo de configuração contém o 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 com mod_alias - Servidor HTTP Apache Versão 2.4 , seu RedirectMatch parece bem. Você está acessando o host virtual certo?

    
por 30.04.2015 / 17:16