使用PHP动态添加到.htaccess文件?

时间:2011-06-15 13:22:26

标签: php .htaccess mod-rewrite dns dynamic

我要做的是自动化网站上线过程。这些网站都是使用htaccess动态创建的,所以这里有一个例子:

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

我所做的是为 domain.com 添加域别名,然后将其指向我的服务器IP,htaccess文件使其查看/文件夹中的内容。

它运行正常,但我们计划拥有数百个网站,并且手动将这些代码片段添加到htaccess会非常烦人。由于我要更改的是 domain.com / folder ,有没有办法使用PHP动态添加到.htaccess文件的底部如果我创建了一个表单并告诉它域和文件夹,它会将它添加到htaccess文件的底部吗?

这会节省很多时间。

非常感谢。

4 个答案:

答案 0 :(得分:27)

我真的不建议允许php将 ANYTHING 添加到.htaccess中,这是一个很大的安全风险。

//but here is your code
$f = fopen(".htaccess", "a+");
fwrite($f, "your content");
fclose($f);

答案 1 :(得分:6)

你走了:

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 {{1}}权限适用于我(因为php在与文件所有者相同的用户下运行)

答案 2 :(得分:3)

不确定。它只是另一个文件,只要进程有权写入文件。

答案 3 :(得分:2)

使用PEAR类File_HtAccess非常舒服。但如前所述,您不应该从可通过Web访问的PHP脚本中编写该文件。