Минимальный веб-сервер на порту 80 будет
python -m SimpleHTTPServer 80
но я хотел бы все время показывать только одну страницу под названием maintenance.html
, независимо от того, какая страница была запрошена.
URL-адрес в браузере должен оставаться тем URL-адресом, который запрашивал посетитель, но без страницы с ошибкой.
Даю этот ответ в основном для развлечения, но вы можете использовать любой супер-сервер (xinetd тоже может выполнить эту работу) и заставить его запускать простой сценарий для каждого запроса на порту 80. Сценарий будет ждать пустой строки на стандартном вводе и затем печатать подготовленный статический ответ. Не уверен, насколько легче вы сможете получить.
Например, при использовании Tcpserver DJB (Я считаю его простым в использовании для таких тривиальных задач), вы можете:
$ tcpserver 127.0.0.1 1080 sh -c 'awk "/^\r*$/ { exit }"; cat answer'
И в answer
файл вы можете иметь:
HTTP/1.0 200
Date: Fri, 02 Nov 2012 16:05:54 GMT
Content-Length: 15
Content-Type: text/html; charset=utf-8
This is a test
Вы можете проявлять столько творчества, сколько хотите.
И вот как я это тестирую:
$ wget -q -O - http://localhost:1080/
This is a test
ОБНОВИТЬ: Для тех, кто серьезно задумывается об этом, для реалистичного использования tcpserver
вам лучше начать так:
tcpserver -H -R -l $HOSTNAME -u $(id -u nobody) -g $(id -g nobody) 0.0.0.0 80 sh -c 'awk "/^\r*$/ { exit }"; cat answer'
По умолчанию tcpserver ищет информацию о входящем соединении и -H
(не ищите удаленное имя в DNS) и -R
(не ищите удаленную информацию с помощью идентификатора) ускорит ответ на входящие соединения. -u
и -g
сбросит привилегии после получения подключения к порту 80, и вам нужно будет запустить его как root, чтобы иметь возможность прослушивать порт 80.
И, конечно же, убедитесь, что порт 80 не прослушивается.
Предположительно это вызвано ответом на ваш предыдущий вопрос.
Почему бы (временно) не применить правило перенаправления в Apache, чтобы все было направлено на вашу страницу сайта? (и если вы сделаете это через прокси-запрос, а не через перенаправление, то любой PHP-скрипт в этом месте сможет прочитать запрошенный URL). Вы можете поменять местами другую конфигурацию без потери запросов, используя плавный перезапуск.