【问题标题】:Use PHP to Dynamically Add To .htaccess File?使用 PHP 动态添加到 .htaccess 文件?
【发布时间】:2011-09-15 13:04:51
【问题描述】:

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

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

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

它运行良好,但我们计划拥有数百个网站,并且手动将 sn-p 代码添加到 htaccess 会很烦人。由于我要更改的只是 domain.com/folder,如果我创建一个表单并告诉它域和文件夹,它会将其添加到 htaccess 文件的底部?

这样可以节省很多时间。

非常感谢。

【问题讨论】:

  • 是的,这是可能的,但要注意安全风险和重复条目。

标签: php .htaccess mod-rewrite dns dynamic


【解决方案1】:

当然。只要进程有权写入文件,它就只是另一个文件。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • @mario:你没看到那么大的“我真的不建议允许 php 将 ANYTHING 添加到 .htaccess 中,这是一个很大的安全风险”?没有代码,我的答案将被删除
    • @mario:我说“我不建议这样做”。如果总是一个很大的风险,甚至一个小错误都可能是网络钓鱼的天堂
    • @mario:当然你可以添加任何你想添加的东西,但如果是用户的输入就不行。
    • 好吧,好吧。我收回“未经证实的”。它只是含糊不清,不适用于 OPs 案例。
    【解决方案3】:

    给你:

    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");
    

    .htaccess 上具有0644 权限对我来说很好(因为php 在与文件所有者相同的用户下运行)

    【讨论】:

    • 非常感谢。这很好用。我知道这是一个很大的安全风险,会发生什么?
    • 如果您觉得这有帮助,您可以接受答案。在您对 .htaccess 的权限保持 0644 之前,这不是安全风险。 (假设函数只会被信任的人调用)
    • 好的,我接受了!不过有一个问题,它在 0644 对我不起作用,但在我做 0666 时它起作用。知道为什么吗? 666 的安全风险更大吗?
    • 其实是的。通过设置 666,您允许所有人写入您的 .htaccess 文件。如果它在 644 不起作用,那是因为您的网络服务器在文件所有者(您)(例如 bob)之外的其他用户(例如,nobody)下运行
    • 伙计,这段代码对我很有帮助,但我不想有任何安全问题。这仅对管理员(极少数人)可用,并且他们的输入选项有限。他们只有一个域名输入框,然后是文件夹的用户名下拉列表。
    【解决方案4】:

    使用 PEAR 类 File_HtAccess 是一种非常舒适的方法。但如前所述,您不应使用可通过 web 访问的 PHP 脚本编写文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      • 1970-01-01
      • 2019-06-23
      • 2021-10-06
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多