2009-08-16 115 views
111

在PHP中,如何獲取當前頁面的URL?最好只是http://domain.com之後的部分。如何在PHP中獲取當前頁面的URL

+0

請參閱這樣的回答:http://stackoverflow.com/questions/6768793/php-get-the-full-url/8891890 #8891890 – 2013-10-19 11:27:35

+7

我覺得有趣的是,這個問題被標記爲另一個,儘管提前兩年提出 – cameronjonesweb 2016-02-22 04:42:17

+2

@cameronjonesweb而另一個問題有一個完全不同的範圍(獲取完整的URL),而不是這個(獲得僅限當前頁面) – person27 2016-12-04 20:35:49

回答

216
$_SERVER['REQUEST_URI'] 

欲瞭解更多詳情,以瞭解信息是$ _ SERVER陣列中可用,請參閱the PHP manual page for it

如果您還需要查詢字符串(以URL的?後位),這部分是在這個變量:

$_SERVER['QUERY_STRING'] 
+5

您還可以使用$ _SERVER ['PHP_SELF'] – 2009-08-16 02:12:33

+11

iirc,PHP_SELF和REQUEST_URI將在頁面被重定向時具有不同的值通過mod_rewrite - 前者具有實際腳本的路徑,後者具有最初請求的路徑。 – Amber 2009-08-16 02:19:08

+1

錯誤,至少在我的apache 2.2.4中,使用php 5.3,REQUEST_URI包含後面的東西?已經... – Kzqai 2011-08-03 16:57:41

22
$uri = $_SERVER['REQUEST_URI']; 

這會給你請求的目錄和文件名。如果你使用mod_rewrite,這是非常有用的,因爲它告訴你用戶在看什麼頁面。

如果您需要實際的文件名,您可能需要嘗試$_SERVER['PHP_SELF'],魔術常數__FILE__$_SERVER['SCRIPT_FILENAME']。後者2給你完整的路徑(從服務器的根目錄),而不僅僅是你的網站的根。它們對包含等有用。

$_SERVER['PHP_SELF']爲您提供了相對於網站根目錄的文件名。

$relative_path = $_SERVER['PHP_SELF']; 
$complete_path = __FILE__; 
$complete_path = $_SERVER['SCRIPT_FILENAME']; 
9

其他回答都是正確的。但是,請注意:如果您希望獲取URI中的?之後的內容,則應使用$_GET[]陣列。

0

可以使用$ _ SERVER [「HTTP_REFERER」]這會給你比如整個網址:假設你想獲得網站名稱www.example.com的網址,然後$ _ SERVER [「HTTP_REFERER」]會給你https://www.example.com

+0

爲什麼我的$ _SERVER變量不包含這個項目? – Daria 2014-09-19 10:47:12

+1

'$ _SERVER ['HTTP_REFERER']'完全按照它所說的那樣進行,即得到將用戶發送到頁面的頁面的URL ... I.E引用者。 – Dendromaniac 2015-05-27 15:41:05

+6

upvoted這個答案的人將有一些麻煩調試他們的代碼。'HTTP_REFERER'不是當前頁面,而是用戶在當前頁面之前使用的頁面。 – AliBZ 2016-05-05 22:18:16

61

如果你只想http://domain.com後的URL的一部分,試試這個:

<?php echo $_SERVER['REQUEST_URI']; ?> 

如果當前的URL爲http://domain.com/some-slug/some-id,回聲只會返回 '/一些段塞/一些-ID'。

,如果你想完整的URL,試試這個:

<?php echo 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?> 
+0

幫我。謝謝 – Daria 2014-09-19 11:10:48

+13

如果您不檢查是否啓用了「HTTPS://」?我發現這個功能檢查:(!空($ _ SERVER [ 'HTTPS'])&& $ _ SERVER [ 'HTTPS'] == '關閉')'函數isSSL(){ \t \t回 \t \t \t \t \t \t || $ _SERVER ['SERVER_PORT'] == 443; \t \t}' – Dendromaniac 2015-05-27 15:39:51