В одностраничном приложении, как правильно обращаться с неправильными 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)

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