我有一个方法,它看起来像这样:
private function setURL()
{
$pageURL = 'http';
if(isset($_SERVER["HTTPS"]) && $_SERVER['HTTPS'] == "on")
{
$pageURL .= "s";
}
$pageURL .= "://";
if($_SERVER["SERVER_PORT"] != "80")
{
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
}
else
{
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
if(substr($pageURL, -4) == ".php")
{
// damn. this is harder to recover from.
$len = strlen(basename(__FILE__, '.php'));
$len = strlen($pageURL) - $len;
$pageURL = substr($pageURL, 0, $len);
}
if(substr($pageURL, -1) != "/")
{
$pageURL .= "/";
}
$this->url = $pageURL;
}
如果用户没有输入文件名,则返回的 URL 与预期的一样,http://localhost/zenbb2
. 但是,如果用户这样做,则无论我尝试执行何种排列,返回的 URL 在某种程度上都是错误的。例如,此代码http://localhost
在访问时返回http://localhost/zenbb2/index.php
,但http://localhost/zenbb2
在访问该 URL 时返回。
编辑我的 .htaccess 文件的内容是:
Options -indexes
RewriteEngine on
另外,我的意思是当前 URL,如果我正在访问http://localhost/zenbb2/index.php
,它会index.php
从 URL 中删除,以便我可以在代码中的各个位置使用它。理想情况下,最后,我可以这样使用它:
$url = 'http://localhost/zenbb2';
echo "<link rel=\"{$url}/sample.css\" />"; // http://localhost/zenbb2/sample.css