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

У меня проблема с обновлением ранее работавшего перенаправления на моем сервере apache (httpd, rhel). Я ранее имел:

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

который работал.

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

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

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

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, но безрезультатно.
Стоит отметить, что ранее, несмотря на то, что модули кеша модов и дисков кеша модов были загружены, конфигурации CacheRoot & etc не было, поэтому я добавил следующее:

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

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

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

Спасибо! Hans

2 ответа

Решение

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

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

[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 Server версии 2.4, ваш RedirectMatch кажется в порядке. Вы получаете доступ к Виртуальному хосту?

Другие вопросы по тегам