如何找到应用程序的基本URL?

DGM*_*DGM 10 php web-applications

我想找到我的应用程序的基本URL,所以我可以自动引用我的应用程序树中的其他文件...

因此,在我的应用程序的基础上给出一个文件config.php,如果子目录中的文件包含它,知道在url前加上什么.

application/config.php
application/admin/something.php
application/css/style.css
Run Code Online (Sandbox Code Playgroud)

因此,http://www.example.com/application/admin/something.php如果访问它,我希望它能够知道css文件所在$approot/css/style.css.在这种情况下,$approot是" /application"但我想知道应用程序是否安装在别处.

我不确定是否可能,许多应用程序(我认为是phpMyAdmin,Squirrelmail)必须先设置一个配置变量.如果它只是知道它会更加用户友好.

And*_*ore 15

我在自制框架中使用以下内容...将它放在应用程序根文件夹中的一个文件中,然后简单地包含它.

define('ABSPATH', str_replace('\\', '/', dirname(__FILE__)) . '/');

$tempPath1 = explode('/', str_replace('\\', '/', dirname($_SERVER['SCRIPT_FILENAME'])));
$tempPath2 = explode('/', substr(ABSPATH, 0, -1));
$tempPath3 = explode('/', str_replace('\\', '/', dirname($_SERVER['PHP_SELF'])));

for ($i = count($tempPath2); $i < count($tempPath1); $i++)
    array_pop ($tempPath3);

$urladdr = $_SERVER['HTTP_HOST'] . implode('/', $tempPath3);

if ($urladdr{strlen($urladdr) - 1}== '/')
    define('URLADDR', 'http://' . $urladdr);
else
    define('URLADDR', 'http://' . $urladdr . '/');

unset($tempPath1, $tempPath2, $tempPath3, $urladdr);
Run Code Online (Sandbox Code Playgroud)

上面的代码定义了两个常量.ABSPATH包含应用程序根目录(本地文件系统)的绝对路径,而URLADDR包含应用程序的完全限定URL.它在mod_rewrite情况下工作.


小智 5

您可以使用以下代码找到基本URL:

define('SITE_BASE_PATH','http://'.preg_replace('/[^a-zA-Z0-9]/i','',$_SERVER['HTTP_HOST']).'/'.str_replace('\\','/',substr(dirname(__FILE__),strlen($_SERVER['DOCUMENT_ROOT']))).'/');
Run Code Online (Sandbox Code Playgroud)

简短而且最好.