2013-08-22 19 views
9

Niedawno potrzebowałem zrobić przekierowanie w php przy użyciu:http:/relative/path oficjalnie działa?

header("Location: http:/relative/path"); 

który wydaje się działać we wszystkich przeglądarkach mam dostępne do mnie (Safari, Chrome, Firefox). Działa to również w przypadku użycia w standardowym łączu:

<a href="http:/relative/path">Link to relative path</a> 

Moje pytanie brzmi, czy jest to fuks, czy formalna implementacja. Muszę potwierdzić moim przełożonym, że jest to znany standard.

Dzięki!

Odpowiedz

5

Per RFC 3986, zgodnie z sekcją 4.2 lub Dodatek A:

URI = schematu ":" Hier-part [ "?" zapytanie] ["#" fragment]

gdzie hier-part może być "//" dla autorytatywnego path path, "/" path-absolute, path-rootless lub path-empty.

Jeśli się nad tym zastanowisz, gdy użyjesz "http: //", "//" oznacza katalog główny dostępnej ścieżki. Dlatego różne schematy protokołu nie potrzebują go tak jak Skype. Używa "skype: echo123? Call", które wywoła użytkownika "echo123". Nie trzeba "//", ponieważ nie ma "root".

Tak, to jest ważne. Ale ponieważ to dokładne użycie jest nieco mniejsze niż normalne ustawienie we współczesnych przeglądarkach, twój przebieg może się różnić. Działa w IE9.

Powiązane problemy