PHP $ _SERVER ['DOCUMENT_ROOT']和htaccess?

时间:2009-08-28 18:07:45

标签: php .htaccess

我知道您不能简单地在htaccess中设置DocumentRoot,但这是我可以访问的全部内容。有工作吗?我该怎么办?或者这是这样的设置的错误配置?

我有一个开发服务器,其中:www.foo.com映射到/ usr / www / users / foo。

然后我

  • www.foo.com/peter =>的/ usr /网络/用户/富/彼得
  • www.foo.com/paul =>的/ usr /网络/用户/富/保

如何设置$_SERVER['DOCUMENT_ROOT']分别映射到/ usr / www / users / foo / peter和/ usr / www / users / foo / paul?

感谢。

2 个答案:

答案 0 :(得分:3)

根据我的经验,我学会了永远不要相信任何$_SERVER变量。相反,我使用dirname()和一个公共包含文件的组合自己设置DOC_ROOT,我确定它的位置永远不会改变。很多常见的框架会在处理所有请求的dispatch或index文件中做类似的事情。

示例应用程序文件夹结构:

-/usr/www/users/
  -peter/
    -script.php
  -paul/
    -script.php
  -index.php
//index.php

DEFINE('ROOT_PATH', dirname(__FILE__));
echo ROOT_PATH; // /usr/www/users/

关于php的magic constants like __FILE__

的更多信息

希望有所帮助。

答案 1 :(得分:2)

DocumentRoot就是这样:特定子域的根(/)uri的文件系统位置。

当处理.htaccess时,改变它已经太晚了。为什么?嗯...因为您正在访问的.htaccess文件位于所述文件系统位置!

话虽如此,您可以创建一个新常量并使用$_SERVER['DOCUMENT_ROOT']作为其中的一部分。