2013-08-20 86 views
0

有沒有辦法在IIS上使用PHP獲取當前完全重寫的URL。在IIS上的PHP獲取當前重寫的URL

舉例來說,我有一個像網址:

http://www.domain.com/searchresults.php?section=99&page=1&model=section-name

被改寫爲: http://www.domain.com/section99/page1/section-name

我已經能夠用拼湊的原始網址:

function selfURL(){ 
    if(!isset($_SERVER['REQUEST_URI'])){ 
     $serverrequri = $_SERVER['PHP_SELF']; 
    }else{ 
     $serverrequri = $_SERVER['REQUEST_URI']; 
    } 
    $s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : ""; 
    $protocol = "http"; 
    $port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]); 
    return $protocol."://".$_SERVER['SERVER_NAME'].$port.$serverrequri.$_SERVER['QUERY_STRING']; 
} 
print(selfURL()); 

無論如何,我可以輕鬆選擇重寫的URL,以避免必須窩窩取決於當前頁面類型,從多種不同的格式和變量中取出友好的URL?

+0

您正在使用的ISAPI_Rewrite爲IIS? – Alvaro

+0

你到底在做什麼?爲非重寫URL獲取重寫的URL?爲什麼?你爲什麼不一直使用重寫的URL呢? – Alvaro

+0

不,我們在IIS7上,並使用內置的重寫模塊 – Fraser

回答

0

我會建議你用Apache的mod_rewrite rules.htaccess文件工作,然後將其導入到IIS 7,將生成的web.config文件。

當然,如果你知道如何直接在web.config上工作,那就去吧!

0

我可以使用:

HTTP_X_ORIGINAL_URL

function selfURL(){ 
    if(!isset($_SERVER['REQUEST_URI'])){ 
     $serverrequri = $_SERVER['PHP_SELF']; 
    }else{ 
     $serverrequri = $_SERVER['REQUEST_URI']; 
    } 
    $protocol = empty($_SERVER["HTTPS"]) ? 'http' : ($_SERVER["HTTPS"] == "on") ? "https" : "http"; 
    $port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]); 
    return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER["HTTP_X_ORIGINAL_URL"]; 
} 
print(selfURL());