Использовать PHP для динамического добавления в файл .htaccess? - PullRequest
5 голосов
/ 15 июня 2011

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

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule ^(.*)$ /folder%{REQUEST_URI}?%{QUERY_STRING} [QSA,L]

Что я делаю, так это добавляю псевдоним домена для domain.com , а затем указываю его на IP-адрес моего сервера, и файл htaccess позволяет ему просматривать содержимое каталога /folder.

.

Работает нормально, но мы планируем создать сотни веб-сайтов, и добавление этого фрагмента кода в htaccess вручную может стать довольно раздражающим. Поскольку все, что я изменяю, это domain.com и / folder , есть ли способ использовать PHP для динамического добавления в конец файла .htaccess, если я создаю форму и скажите ему домен и папку, он добавит его в конец файла htaccess?

Это сэкономило бы столько времени.

Большое спасибо.

Ответы [ 4 ]

27 голосов
/ 15 июня 2011

Я действительно не рекомендую php добавлять НИЧЕГО в .htaccess, это большая угроза безопасности.

//but here is your code
$f = fopen(".htaccess", "a+");
fwrite($f, "your content");
fclose($f);
6 голосов
/ 15 июня 2011

Вот, пожалуйста:

function writeht($domain, $folder)
{
    $fp = fopen('.htaccess','a+');
    if($fp)
    {
        fwrite($fp,'

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^(www\.)?'.str_replace('.','\.',$domain).'$ [NC]
RewriteRule ^(.*)$ /'.$folder.'%{REQUEST_URI}?%{QUERY_STRING} [QSA,L]');
        fclose($fp);
    }
}

//usage: writeht("domain.biz","yourfolder");

У меня отлично работает с 0644 разрешениями на .htaccess (так как php запускается под тем же пользователем, что и владелец файла)

3 голосов
/ 15 июня 2011

Конечно.Это просто другой файл, если процесс имеет разрешение на запись в файл.

2 голосов
/ 15 июня 2011

Довольно удобный способ - использовать класс PEAR File_HtAccess .Но, как уже было сказано, вы не должны писать файл из PHP-скрипта, который доступен через Интернет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...