Определение, должен ли URL иметь косую черту в конце в Java
Я пытаюсь выполнить какое-то сканирование, и я столкнулся с вопросом, когда добавлять слеш или нет. Я знаю, что некоторые сайты имеют его в конце, а некоторые нет, но ввод неправильного в браузер просто перенаправит вас на правильный. Нормализация добавит косую черту в конце, но это вызовет проблему при попытке преобразовать относительные URL в абсолютные.
Например, если пользователь выбирает абсолютный URL http://stack.com/more
но фактический (перенаправленный) URL http://stack.com/more/
и относительный URL-адрес index.html
Затем делать URL newurl = new URL(url, relativeURL);
доходность http://stack.com/index.html
(несуществующая страница)
когда это должно быть на самом деле http://stack.com/more/index.html
(реальная страница)
Кто-нибудь знает хороший способ правильно добавить косую черту в конце?
1 ответ
Если относительный URL начинается с /
, это только относительно корня (домена). Так что оба
http://stack.com/more/ + /index.html
а также
http://stack.com/more + /index.html
правильно разрешены
http://stack.com/index.html
не
http://stack.com/more/index.html
В вашем примере не имеет значения, есть ли /
в конце more
,
Уловка возникает, когда на относительном URL нет косой черты, например index.html
, При их разрешении вы должны удалить последний сегмент и заменить его относительным путем. Это имело бы значение в этом случае, потому что
http://stack.com/more/ + index.html
решает в
http://stack.com/more/index.html
но
http://stack.com/more + index.html
решает в
http://stack.com/index.html
(index.html
заменяет more
, так как more
это последний сегмент).