【问题标题】:Can I make a dynamic .htaccess file?我可以制作一个动态的 .htaccess 文件吗?
【发布时间】:2011-04-18 11:44:34
【问题描述】:

我可以用 php 生成我的 .htaccess 吗?
我想使用 php 从数据库中的信息动态创建我的 htaccess 文件。
每当我更改一些代码时,它都会省去创建新 .htaccess 文件的麻烦。

【问题讨论】:

  • 他们不会说你疯了。有更好的方法来完成你想要的。
  • 如果可能,您需要访问 httpd.conf/Apache 配置。问题是您需要一个 .htaccess 文件才能将 .htaccess 文件添加为可执行文件。即便如此,我很确定 Apache 仍然会将此文件视为文本文件,因此它不会在读取它时执行 PHP。这听起来是一件非常酷且有趣的事情,但正如拜伦所说,有更好的方法来实现你可以从中获得的任何好处。

标签: php mysql apache .htaccess


【解决方案1】:

你可以用file system functions读写文件,例如:

$data = <<<EOF
RewriteEngine on
RewriteRule …
EOF;
file_put_contents('.htaccess', $data);

但是,如果您使用一个静态规则将请求重定向到您的 PHP 文件,然后执行其余的操作,那将会更加灵活。

【讨论】:

  • 嗯,我有一堆重写,用不同的 get vars 重写到我的 index.php
  • 你确定你不能用一个通用规则来处理这个重写,然后在 index.php 中检查一个有效的 get 变量(为了安全起见,无论如何你都需要这样做)?
  • 这个答案确实最有意义,因为我可以做一个 cron 作业来生成 .htaccess
  • @InsanityNet:我宁愿考虑这种路由的 PHP 变体。当使用统一的、分层的 URL 设计时,您可以轻松地将请求传递给相应的脚本。
  • @InsanityNet:它们并不相互排斥。事实上,应用程序 (PHP) 确实比您的 Web 服务器 (.htaccess) 更了解 URL 的含义。所以应该是应用程序进行请求解析,而不是 Web 服务器。这也将消除动态编写重写规则。
【解决方案2】:

你可以吗?当然。只要您有权限,您就可以使用 PHP 在文件系统中创建文件。

你应该吗?好吧,如果你只在“命令行”模式下使用 PHP,我想它和另一种脚本语言一样好。如果您是从网站上这样做的,出于安全原因,我会说这是一个坏主意。另一种技术可能更合适(如果您最初有 XML,那么会想到 XSLT,但您使用的是 mysql,所以您需要其他类型的脚本)。

【讨论】:

  • 这对我的问题有什么帮助?你不会在命令行模式下使用 .htaccess .....
  • 不,但这并不能阻止您生成它,就像您使用其他脚本一样。如果您想从网页调用生成它,那就另当别论了。
  • 不,我想基本上告诉apache调用.htaccess(就像它一样),在php中解析它,然后在apache中解析它
【解决方案3】:

如果你有一个后端脚本来做,你绝对可以用 PHP 生成你的 .htaccess - 比如在你的管理区域。但这似乎有风险并且可能没有必要?如果出现问题,您的网站将关闭,直到您修复它 - 这可能意味着您用于生成它的页面。为什么不直接创建一个界面,从数据库中为您生成新规则,然后您可以快速查看并复制它们?

您要更新的具体内容是什么?

【讨论】:

    猜你喜欢
    • 2021-04-12
    • 2011-05-25
    • 1970-01-01
    • 2012-12-14
    • 2011-05-03
    • 2011-04-25
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多