私は方法を持っています、それは次のようになります:
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 を意味します。私が にアクセスしていた場合、コードのさまざまな場所で使用できるように URL からhttp://localhost/zenbb2/index.php
トリミングされます。index.php
理想的には、最終的には次のように使用できます。
$url = 'http://localhost/zenbb2';
echo "<link rel=\"{$url}/sample.css\" />"; // http://localhost/zenbb2/sample.css