目录路径调用,奇怪的行为

时间:2014-10-08 21:08:29

标签: php jquery .htaccess path

我有一个ajax请求,我正在尝试调用位于以下位置的特定文件:

ROOT/admin/functions/upload/filename.php

发出请求的页面位于:

ROOT/admin/customers/123 

通过htaccess从

修改
ROOT/admin/customer.php?id=123

我已经尝试了我能想到的每种路径组合,但是当我使用

时,我会遇到一些奇怪的行为
../functions/upload/filename.php

它在

中查找文件
ROOT/functions/uploads/filename.php

当我使用

functions/upload/filename.php

它在

中查找文件
ROOT/admin/customers/functions/uploads/filename.php

所以我试过

../admin/functions/upload/filename.php

它看起来在

ROOT/admin/admin/functions/upload/filename.php

我把头发拉到这里,有没有人知道这可能是什么?

非常感谢任何帮助。

谢谢,詹姆斯。

1 个答案:

答案 0 :(得分:1)

由于浏览器知道关于服务器端路径的NOTHING,并且它只有你在地址栏中看到的路径,例如

http://example.com/ROOT/admin/customers/123 

然后如果你的ajax代码看起来像

$.ajax('functions/foo/bar.php');

然后ajax调用将请求

http://example.com/ROOT/admin/customers/123/functions/foo/bar.php

同样,添加../只会剥离源页面地址的级别:

$.ajax('../../functions/foo/bar.php');

结果

http://example.com/ROOT/admin/customers/123/../../functions/foo/bar.php
                                         ^-A-^
                                 ^-------B------^

http://example.com/ROOT/admin/functions/foo.bar.php

你可能想要

$.ajax('/ROOT/functions/foo/bar.php');

使用前导/,浏览器会忽略url中的所有子目录内容,并使用ajax调用的整个路径作为整个路径。

http://example.com/ + /ROOT/functions/foo.bar.php