2009-08-16 13 views
111

W PHP, w jaki sposób mogę uzyskać adres URL bieżącej strony? Najlepiej tylko części po http://domain.com.Jak uzyskać adres URL bieżącej strony w PHP

+0

Proszę zobaczyć tę odpowiedź: http://stackoverflow.com/questions/6768793/php-get-the-full-url/8891890 # 8891890 –

+7

Uważam, że to zabawne, że to pytanie jest oznaczone jako duplikat innego, mimo że zostało zadane dwa lata wcześniej. – cameronjonesweb

+2

@cameronjonesweb I że inne pytanie ma zupełnie inny zakres (uzyskanie pełnego adresu URL), w przeciwieństwie do tego (uzyskanie tylko bieżąca strona) – person27

Odpowiedz

216
$_SERVER['REQUEST_URI'] 

Aby uzyskać więcej informacji na jakie informacje są dostępne w tablicy $ _SERVER, zobacz the PHP manual page for it.

Jeśli potrzebujesz także ciąg kwerendy (bit po ? w adresie URL), że jest to w tej zmiennej:

$_SERVER['QUERY_STRING'] 
+5

Możesz także użyć $ _SERVER ['PHP_SELF'] –

+11

iirc, PHP_SELF i REQUEST_URI będą miały różne wartości, jeśli strona została przekierowana przez mod_rewrite - pierwsza ma ścieżkę do rzeczywistego skryptu, druga ma pierwotnie żądaną ścieżkę. – Amber

+1

Błąd, przynajmniej w moim apache, 2.2.4, z php 5.3, REQUEST_URI zawiera rzeczy po? już ... – Kzqai

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

To daje żądany katalog i nazwę pliku. Jeśli używasz mod_rewrite, jest to bardzo przydatne, ponieważ informuje cię o stronie, na którą patrzy użytkownik.

Jeśli potrzebujesz rzeczywistej nazwy pliku, możesz wypróbować albo $_SERVER['PHP_SELF'], stałą magiczną __FILE__, albo $_SERVER['SCRIPT_FILENAME']. Te ostatnie 2 dają ci pełną ścieżkę (z katalogu głównego serwera), a nie tylko katalog główny twojej strony. Są użyteczne w przypadku włączeń i takich.

$_SERVER['PHP_SELF'] podaje nazwę pliku względem katalogu głównego witryny.

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

Inne odpowiedzi są prawidłowe. Jednak krótka uwaga: jeśli chcesz pobrać rzeczy po ? w URI, powinieneś użyć tablicy $_GET[].

0

można użyć $ _SERVER [ „HTTP_REFERER”] to daje cały adres URL, na przykład: załóżmy, że chcesz dostać url nazwa witryny www.example.com następnie $ _SERVER [ „HTTP_REFERER”] daje https://www.example.com

+0

Dlaczego moja zmienna $ _SERVER nie zawiera tego elementu? – Daria

+1

'$ _SERVER ['HTTP_REFERER']' robi dokładnie to, co mówi na puszce, a to jest adres URL strony, która wysłała użytkownika do strony ... I.E Referer. – Dendromaniac

+6

Osoby, które wznowiły tę odpowiedź, będą miały problemy z debugowaniem kodu.'HTTP_REFERER' nie jest bieżącą stroną, to użytkownik strony był obecny przed bieżącą stroną. – AliBZ

61

jeśli chcesz tylko te części adresu URL po http://domain.com, spróbuj tego:

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

jeśli bieżący url było http://domain.com/some-slug/some-id, echo powróci tylko '/ Some-ślimak/some-id'.

jeśli chcesz pełnego adresu URL, spróbuj to:

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

Pomóż mi. dzięki – Daria

+13

Jeśli nie zaznaczysz, czy włączona jest opcja "HTTPS: //"? Znalazłem tę funkcję, aby sprawdzić: (! Empty ($ _ SERVER [ 'https']) && $ _SERVER [ 'https'] == 'off') 'function isSSL() { \t \t zwrot \t \t \t \t \t \t || $ _SERVER ['SERVER_PORT'] == 443; \t \t} – Dendromaniac

Powiązane problemy