【问题标题】:Directory path calls, strange behaviour目录路径调用,奇怪的行为
【发布时间】:2014-12-03 16:17:10
【问题描述】:

我有一个 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

我在这里拉头发,有人知道这可能是什么吗?

任何帮助将不胜感激。

谢谢,詹姆斯。

【问题讨论】:

  • 你为什么不使用像/functions/uploads/filename.php这样的绝对路径?这将使您的文件可以从任何子目录访问。
  • 我不得不更改我所有的 PHP 包含/需要相对路径来处理 XAMMP,但我尝试它只是为了查看它在 ROOT/functions/upload/filename.php 中查找文件
  • 有两种绝对路径:在服务器端,文件系统,在客户端,相对于网络服务器的根目录。你到底有什么问题?

标签: php jquery .htaccess path


【解决方案1】:

因为浏览器对你的服务器端路径一无所知,它只有你在地址栏中看到的路径,例如

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

【讨论】:

  • /ROOT/functions/foo/bar.php' 为我工作,我不知道为什么我不能在 XAMPP 中使用相对路径,但是当我尝试实时版本和相对路径工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-03
  • 1970-01-01
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多