0

私は方法を持っています、それは次のようになります:

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.phphttp://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
4

3 に答える 3

0

これを試してください

$url = $_SERVER['REQUEST_URI'];
echo basename($url);

index.phpこれはから与えるべきですhttp://localhost/zenbb2/index.php

于 2013-06-09T09:26:15.333 に答える
0

これを達成するために使用できますdirname

$ php -a
> $url = 'http://localhost/zenbb2/index.php';
> echo dirname($url);
http://localhost/zenbb2

編集: dirname常に文字列の最後の部分を削除するため、削除しすぎないように注意してください。ただし、URL やディレクトリ パスをトラバースする場合に役立ちます。

于 2013-06-09T09:13:21.690 に答える