Написать файл .htaccess на PHP? - PullRequest
7 голосов
/ 19 января 2010

На моем PHP-сайте я бы хотел иногда показывать пользователям страницу поддержки. Я знаю, что могу сделать это в PHP очень легко, но я бы предпочел использовать файл htaccess, я думаю, что производительность может быть выше. Итак, что я хочу знать, могу ли я изменить файл htaccess в PHP? Если это возможно, я думаю, либо,

1 - Обязательно файлы, и 1 будет содержать приведенный ниже код, а другой - нет, оба файла будут содержать и другие мои htaccess вещи. Затем php может переименовать эти 2 файла, когда я запускаю скрипт администратора, чтобы переключить отображаемый файл, изменив его имя на .htaccess

2- Прочитайте содержимое текущего файла .htaccess и ПРИЛОЖИТЕ в него приведенный ниже код, а затем сможете при необходимости удалить его из файла.

RewriteEngine On
RewriteBase / 
RewriteCond %{REQUEST_URI} !^/maintenance\.php$
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]

Моя цель - создать скрипт администратора, который может обрабатывать в 1 клик, чтобы страница обслуживания отображалась или не отображалась.

Пожалуйста, любой пример кода или советы о том, как это сделать, или, если возможно, изменить файл .htaccess из PHP

Ответы [ 3 ]

12 голосов
/ 19 января 2010

Вы можете использовать fopen для открытия и fwrite для записи в файл. Вы захотите открыть его в режиме добавления, прочитайте руководство, чтобы узнать, какие из них применимы.

Тем не менее, это звучит как странный способ делать что-то.

Я выполняю то, что вы пытаетесь сделать, просто переписав правила, проверяющие наличие файлов:

RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /maintenance.html [L]

Если файл maintenance.html присутствует, то мой сайт находится на обслуживании.

9 голосов
/ 19 января 2010

Я настоятельно рекомендую не писать .htaccess из PHP. Вы должны предоставить пользователю веб-сервера (который традиционно имеет очень низкие права) запись в .htaccess; все, что вам нужно, это один эксплуатируемый скрипт, и злоумышленник может эффективно перенастроить ваш сервер.

Для режима обслуживания, встроенного в приложение, необходимо, чтобы PHP сама возвращала страницу обслуживания. Когда вы выполняете обслуживание самого приложения, достаточно просто временно переименовать файл в положение .htaccess's, чтобы включить перезапись обслуживания.

0 голосов
/ 13 июня 2013
RewriteEngine On
RewriteBase / 
RewriteCond %{REQUEST_URI} !^/maintenance\.php$
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...