Подтвердить что ты не робот

Относительные URL-адреса и конечные косые черты

Я уже просматривал эту информацию в Интернете и подозреваю, что ответ "вы не можете", но, поскольку я еще не нашел ответ, который был бы настолько окончательным, я думаю, его стоит спросить здесь. Самое близкое, что я обнаружил, касающееся этой проблемы, это загадка завершающего слеша и относительного URL (который в настоящее время недоступен, но у Google есть текстовая кешированная версия).

Из-за традиционного дизайна URL-адресов с конечной косой чертой, интерпретируемой как каталог, и тех, у которых конечная косая черта не интерпретируется как файловый ресурс, а относительные URL-адреса работают вне каталога, тогда, если текущая страница имеет путь

/lorem/ipsum/dolor

относительный путь

not-dolor

разрешится как

/lorem/ipsum/not-dolor

что естественно имеет смысл, когда /lorem/ipsum/dolor рассматривается как файловый ресурс, dolor, находящийся в каталоге, /lorem/ipsum/; типичные, интуитивные соглашения. Однако, поскольку значительное количество веб-сайтов в настоящее время являются динамическими приложениями без сопоставления файловой системы для каждого URL-адреса, это может вызвать головную боль, потому что иногда вы действительно хотите работать по отношению к пути, как если бы в текущем проекте имел место косая черта.

Существует ли какой-либо разумный способ ("не включающий обработку на стороне сервера/переменные/другие или JavaScript") использовать относительный путь, основанный на текущем пути, а не "каталог" текущего пути? Так что not-dolor может быть относительно /lorem/ipsum/dolor и производить

/lorem/ipsum/dolor/not-dolor

Я не знаю обходного пути, связанного с чем-то вроде ./not-dolor, поскольку . все еще (/lorem/)ipsum/. Если не считать перенаправления на конечную косую черту и проверки того, что все ресурсы имеют URL-адреса, соответствующие характеру каталогов и файловых связей, или изменения спецификации (!), Есть ли способ решить эту проблему?

4b9b3361

Ответ 1

Нет.

Проблема не столько связана с сопоставлением режиссера и файла (чего никогда не ожидалось, так как будут отображаться сопоставления, допускается только как удобное отображение, которое все еще часто удобно).

Это больше связано с тем, что dolor не совпадает с dolor/, и вы хотите дать новый URI из ссылки относительно dolor/ при объединении с одним окончанием в dolor.

Каким может быть решение, действовать с /lorem/ipsum/dolor/ все время. То есть, никогда не говоря о /lorem/ipsum/dolor вообще, только когда-либо о /lorem/ipsum/dolor/. В конце концов, поскольку сопоставление каталога/файла, как вы говорите, не единственный способ сделать что-то, нет причин, по которым ваши имена ресурсов не всегда заканчиваются косой чертой.

В самом деле, это может иметь большее значение, так как при использовании таких относительных связей вы подразумеваете, что между /lorem/ipsum/dolor/not-dolor и /lorem/ipsum/dolor существует какая-то связь. Теперь, хотя /lorem/ipsum/dolor/not-dolor может не иметь большого отношения к /lorem/ipsum/dolor/, подразумевается, что он может присутствовать в URI (да URI непрозрачны, но также, когда они должны рассматриваться как непрозрачные на некоторых уровнях, они разрешены для отражения отношений, и именно поэтому относительные ссылки URI имеют смысл). Следовательно, следовательно, /lorem/ipsum/dolor/ более четко отражает ваше общее сопоставление URI-к ресурсам (если это не так, вы бы не хотели идти от долора до не-долора).

Теперь это сводится к перенаправлению на трейлинг-косую черту, которую, как вы говорите, вы хотите избежать (или, еще лучше, никогда не приводить кого-то к dolor), но его преимущества теперь кажутся лучше, чем просто удобство более простых относительных URI.