Я бы, наверное, сделал это с PHP, а не с Apache, но это только мои собственные предпочтения. Если вызов header()
не работает, скорее всего, потому что у вас есть пробелы вне тегов PHP где-то перед вызовом header()
. Обратите внимание на это в руководстве по PHP :
Помните, что header () должен быть вызван
перед отправкой любого фактического вывода,
либо обычными тегами HTML, пустым
строки в файле или из PHP. Это
очень распространенная ошибка при чтении кода
include () или require (), функции или
другая функция доступа к файлу, и есть
пробелы или пустые строки, которые выводятся
перед заголовком () вызывается. Такой же
проблема существует при использовании одного
Файл PHP / HTML.
Если вы должны сделать это с Apache, mod_headers не подходит. mod_headers может устанавливать заголовки только в зависимости от того, является ли запрос успешным (2xx) или для любого запроса. См. Директива заголовка .
Вместо этого, я думаю, это можно сделать с помощью комбинации mod_rewrite и mod_asis . У меня нет конкретного «рецепта» для этого, но идея состоит в том, чтобы проверить, авторизован ли запрос с помощью mod_rewrite, и, если он не авторизован, переписать / перенаправить URI запроса в документ .asis, содержащий Информация заголовка, которую вы хотите отправить обратно.