Htaccess重写规则超出root

时间:2013-11-16 16:06:10

标签: .htaccess document-root

我正在尝试做一个特殊的重写规则 假设 ROOT 作为我的托管根。

我在 ROOT /文件夹

上将domain.tld设置为root

当我在domain.tld根目录(文件夹)上运行的脚本中尝试此操作时:

RewriteRule sth/?$ ../file.php

它不起作用,因为我要离开域Root。但是,既然我在同一个主机上,它不应该工作吗?还有其他选择吗?我曾经听说过符号链接,它们适用于这里吗?

感谢您的精彩关注。

1 个答案:

答案 0 :(得分:2)

  

因为我在同一个主机上,不应该有效吗?

不,如果你在托管服务上没关系。站点的文档根是apache将能够访问该站点的最上层目录。因此,当您将URL重写为../file.php时,apache不能遍历任何高于文档根目录的URL。 这是非常有理由,因为它可以防止狡猾道德的人制作apache访问他们不应该看到的文件(例如../../../../../../etc/passwd

你唯一能做的就是将file.php放在你的文档根目录中,或者创建一个包含它的脚本:

require ../file.php

include ../file.php

然后在重写规则中调用该脚本。