Apache httpd не реализует обновления конфигурации перенаправления 301

Apache httpd не реализует обновления конфигурации перенаправления 301

У меня возникла проблема с обновлением ранее работающего редиректа на моем сервере Apache (httpd, rhel). Раньше у меня было:

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

что сработало.

Я изменил это на:

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

и теперь это не работает. То есть, когда я пытаюсь нажать на простуюhttp://<хост>/apidocsurl, я получаю 301 со старым местоположением перенаправления в заголовках ответа, а затем 404 в браузере, когда он пытается GET из старого местоположения. Журнал ошибок httpd подтверждает, что браузер пытался GET старый каталог:

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

Выполнение service httpd reloadили service httpd force-reloadприводит к созданию только следующей единственной строки вывода:

Reloading httpd:

...так что, по-видимому, это успешно. Также,

(1) при запуске httpd в его журнале ошибок нет никаких жалоб.
(2) при запуске apachectl configtestвыводится Syntax OK.
(3) при запуске httpd -tвыводится Syntax OK.
(4) Я останавливал и «грациозно» запускал httpd несколько раз, но безрезультатно.
(5) Я пробовал использовать apachectl -k stop/start, но безрезультатно.

(6) Я также попробовал очистить кэш с помощью htcacheclean, но безрезультатно.
Здесь стоит отметить, что ранее, хотя модули mod cache и mod cache disk загружались, не было никакой конфигурации CacheRoot и т. д., поэтому я добавил следующее:

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

...и впоследствии проверил, что он заполняется, и очистил его с помощью htcacheclean.

Где еще могут храниться эти устаревшие данные 301?

Спасибо! Ганс

решение1

Первым делом вам необходимо устранить синтаксическую ошибку, поэтому запустите httpd -t, например, так (за исключением части echo), таким образом вы сможете выяснить, какой файл конфигурации содержит синтаксическую ошибку:

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

В соответствии сmod_alias - Apache HTTP-сервер версии 2.4, RedirectMatchкажется, все в порядке. Вы обращаетесь к правильному виртуальному хосту?

решение2

...так что "ответ" таков:постановка вопроса неверна. То есть, apache httpd делает свою работу правильно. Реальная проблема в том, чтогде-то между httpd на сервере и моей локальной машиной есть уровень кэширования. Я принимаю в качестве доказательства то, что:
1. wget, запущенный с моей локальной машины, перенаправляется на старый redirect-url, в то время как
2. wget, запущенный с сервера, корректно перенаправляется на новый redirect-url,
а журналы доступа для первого выглядят следующим образом:

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

тогда как последний произвел:

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

Связанный контент