在PHP中,给定某个文件的磁盘路径,如何猜测该文件的URL


In PHP, how do you guess the URL to a certain file, given her disk path?

这听起来很令人困惑,但事实并非如此。问题是:

  1. 应用程序位于www.site.com/app
  2. 在/app中,有一个htaccess将任何不存在的文件或目录重新路由到index.php
  3. index.php执行$method = end(explode('/',$_SERVER['REQUEST_URI']));并调用它的方法
  4. 现在,方法可以是CSS,所以CSS例程需要获取CSS文件,并用url(http://site.com/app/images替换任何url(images/

问题在于"猜测"http://site.com/app/images,因为REQUEST_URI的范围可以从最干净的site.com/images到最脏的http://ex.gau.mit.edu/~jonas/site/projects/2012/app/ignoredmethod/more/ignored/methods/css

在不指定脚本URL的情况下,如何猜测图像文件夹的URL?

SCRIPT_NAME在这里将非常有用。

define('URL', (dirname($_SERVER['SCRIPT_NAME'])) == "/" ? "" : (dirname($_SERVER['SCRIPT_NAME']))); 

用法:

echo "<a href='http://$_SERVER[SERVER_NAME]/".URL."/images/image.jpg'>image</a>";