Apache httpd implementiert keine Updates für eine 301-Umleitungskonfiguration

Apache httpd implementiert keine Updates für eine 301-Umleitungskonfiguration

Ich habe ein Problem beim Aktualisieren einer zuvor funktionierenden Umleitung auf meinem Apache-Server (httpd, rhel). Zuvor hatte ich:

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

was funktioniert hat.

Ich habe es geändert in:

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

und jetzt funktioniert es nicht. Das heißt, wenn ich versuche, die einfachehttp://<Host>/apidocsurl, ich erhalte eine 301 mit dem alten Umleitungsort in den Antwortheadern, gefolgt von einer 404 im Browser, wenn er versucht, vom alten Ort abzurufen. Das httpd-Fehlerprotokoll bestätigt, dass der Browser versucht hat, das alte Verzeichnis abzurufen:

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

Die Verwendung von service httpd reloadoder service httpd force-reloaderzeugt nur die folgende einzelne Ausgabezeile:

Reloading httpd:

...also ist es vermutlich erfolgreich. Außerdem,

(1) Wenn httpd gestartet wird, enthält das Fehlerprotokoll keine Beanstandungen.
(2) Beim Ausführen apachectl configtestwird angezeigt Syntax OK.
(3) Beim Ausführen httpd -twird angezeigt Syntax OK.
(4) Ich habe httpd mehrmals angehalten und ordnungsgemäß gestartet, ohne Erfolg.
(5) Ich habe versucht, apachectl -k stop/start zu verwenden, ohne Erfolg.

(6) Ich habe nun auch versucht den Cache mittels htcacheclean zu leeren, leider ohne Erfolg.
Es ist hier erwähnenswert, dass zuvor zwar die Mod-Cache- und Mod-Cache-Disk-Module geladen wurden, es jedoch keine Konfiguration von CacheRoot usw. gab. Daher habe ich Folgendes hinzugefügt:

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

...und habe anschließend überprüft, ob es ausgefüllt wurde, und es mit htcacheclean gelöscht.

Wo sonst könnten diese veralteten 301-Daten weiter verbreitet werden?

Danke! Hans

Antwort1

Als Erstes müssen Sie den Syntaxfehler beheben. Führen Sie ihn daher httpd -twie folgt aus (mit Ausnahme des Echo-Teils). Auf diese Weise können Sie herausfinden, welche Konfigurationsdatei einen Syntaxfehler enthält:

[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]# 

Entsprechendmod_alias - Apache HTTP Server Version 2.4, bei Ihnen RedirectMatchscheint alles in Ordnung zu sein. Greifen Sie auf den richtigen virtuellen Host zu?

Antwort2

...also ist die "Antwort", dassdie Prämisse der Frage ist falsch. Das heißt, Apache httpd macht seine Arbeit richtig. Das eigentliche Problem ist, dassIrgendwo zwischen httpd auf dem Server und meinem lokalen Computer gibt es eine Caching-Ebene. Als Beweis hierfür betrachte ich Folgendes:
1. Ein von meinem lokalen Rechner ausgeführtes Wget wird zur alten Umleitungs-URL umgeleitet, während
2. ein vom Server ausgeführtes Wget korrekt zur neuen Umleitungs-URL umgeleitet wird.
Die Zugriffsprotokolle für Ersteres sehen folgendermaßen aus:

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

In der Erwägung, dass Letzteres Folgendes ergab:

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

verwandte Informationen