В одностраничном приложении, как правильно обращаться с неправильными URL-адресами (404 ошибки)?

В настоящее время я пишу веб-приложение с использованием angularjs, но я думаю, что этот вопрос относится к любой клиентской платформе JavaScript, которая выполняет маршрутизацию на стороне клиента (как угловой).

В одностраничном приложении, как правильно обращаться с неправильными URL-адресами?

Просматривая несколько крупных сайтов, я вижу, что gmail будет перенаправлять на входящие, если вы введете любой случайный URL нижеhttps://mail.google.com/mail/, Это происходит на стороне сервера (с кодом http 300) или на стороне клиента, в зависимости от того, является ли неправильный путь до или после символа #. С другой стороны, твиттер показывает реальный HTTP 404 для любого неверного URL. Третий вариант - показать «мягкий» 404, чисто клиентскую страницу ошибок.

Эти решения кажутся подходящими для различных ситуаций. Твиттер хочет, чтобы ссылки для пользователей Твиттера и твиты были реальными ссылками, чтобы люди могли делиться ими, публиковать их в новостных статьях и т. Д., Поэтому важно, чтобы недопустимые ссылки распознавались как таковые (если у меня есть неработающая ссылка на твит в мой сайт, простое сканирование скажет мне, что). В gmail, с другой стороны, вы не должны делиться ссылками в своем почтовом ящике, и я даже не уверен, действительно ли ссылки постоянны / постоянны: кажется, что обновление URL в основном служит для навигации по истории браузера в одностраничное приложение. Третий подход предоставления мягких ошибок может быть подходящим для ситуаций, подобных gmail, но где нет разумной страницы по умолчанию.

После этого длинного вступления вот несколько конкретных вопросов:

Допустимо ли когда-либо выдавать «мягкую» страницу ошибки вместо ошибки 404, или одностраничное приложение всегда должно перенаправлять на реальный 404, если URL недействителен?Код Gmail может быть абсолютно безошибочным, но если в нем есть ошибка, приводящая к недействительным ссылкам, которые в конечном итоге перенаправляют обратно в папку «Входящие», это может быть еще более запутанным для пользователей, чем страница с ошибкой. Для большинства веб-приложений, которые не так хорошо протестированы, как gmail, было бы лучше показать страницу с ошибкой?Для реализации реальных 404-х для одностраничных приложений кажется необходимым дублировать логику маршрутизации на стороне сервера. Есть ли способ обойти это?Я думаю, что при перенаправлении на 404 пользователь должен видеть URL-адрес, вызвавший ошибку, возможно, в строке URL-адреса. Я думаю, что с помощью API истории html5 это можно сделать, просто вызвав перезагрузку текущей страницы (с неверным URL) в сочетании с упомянутой выше маршрутизацией на стороне сервера. Для браузеров, которые не поддерживают это или при использовании нотации hashbang, это кажется невозможным. Каков наилучший способ поддержки всех браузеров?

Ответы на вопрос(2)

Ваш ответ на вопрос