2011-01-11 17 views
6

Zauważyłem, że https://stackoverflow.com//////////questions/4659504/ jest prawidłowym adresem URL. Jednak https://www.google.com//////////analytics/settings nie jest. Czy istnieją różnice związane z technologiami serwera WWW, które to wyjaśniają? Czy URL z niepotrzebnymi ukośnikami powinien być interpretowany poprawnie, czy powinien zwrócony błąd?Czy niepotrzebne ukośniki w adresie URL są nieprawidłowe?

+0

Ups, oznaczono niewłaściwą rzecz, zignoruj ​​proszę. – cybermonkey

Odpowiedz

4

Po pierwsze, dodanie slasha zmienia semantykę ścieżki URL tak jak każda inna postać. Tak więc z definicji /foo/bar i /foo//bar nie są równoważne, tak jak /foo/bar i /foo/bar/ nie są równoważne.

Ale ponieważ ścieżka URL jest stosowany głównie do być bezpośrednio mapowane na systemie plików, serwery WWW często usuwanie pustych segmentów ścieżek (Apache robi), tak że /foo//bar i /foo/barobsługiwane równoważnie. Ale nie jest to oczekiwane zachowanie; to raczej zrobić dla korekcji błędów.

+0

Czy możesz podać regułę .htaccess w celu usunięcia tego samego. – rahijain

+0

Wypróbuj ten: 'RewriteCond% {REQUEST_URI}^(/ ([^? /] + /) *)/+ (. *) RewriteRule ^% 1% 3 [L, R = 301]' – Gumbo

2

Obaj są prawidłowymi adresami URL.
Jednak serwer Google nie może obsłużyć drugiego.

Nie ma konkretnego powodu, aby obsługiwać lub odrzucać adresy URL z duplikatami ukośników; powinieneś poświęcić więcej czasu na ważniejsze rzeczy.

+0

Serwer Google nie może co zrobić? – Gumbo

+2

Oto przykład, gdy widocznie jest to ważne ... http: //www.mydigitallife.info/2008/07/21/redirect-or-rewrite-to-remove-double-or-multiple-slashes-in-url/ –

+0

@Gumbo: Naprawiono; dzięki. – SLaks

0

Istnieje różnica w sposobie przetwarzania żądań przez każdą aplikację. Jeśli skonfigurujesz aplikację tak, by zastępowała kolejne ukośniki przed trasowaniem żądania, nie powinieneś mieć żadnych problemów.

1

Co uważasz za "poprawnie zinterpretowane"? Protokół HTTP określa tylko, w jaki sposób dane przed slashiem po nazwie serwera zostaną zinterpretowane. Resztę należy wyłącznie do serwera WWW. Parsuje to, co dajesz po tym punkcie (w jakikolwiek sposób lubi) i prezentuje ci cały HTML, który wydaje się dostarczać dla tego tekstu.

Powiązane problemy