Может кто-нибудь объяснить шаг за шагом, как мы можем удалить # из URL-адреса в Aurelia
Как удалить # из URL в Aurelia
Ответ 1
Функция, которую вы ищете, называется PushState. Вы можете найти дополнительную информацию в разделе Cheat Sheet в разделе Aurelia Hub. Просто прокрутите вниз до Routing
/Configuring PushState
.
-
Добавьте базовый тег в начало вашего HTML-документа. Я не думаю, что это необходимый шаг, так как мои приложения работают без него.
-
Если вы используете JSPM, настройте
baseURL
(в файлеconfig.js
). -
Включить PushState в конфигурации маршрутизатора:
export class App {
configureRouter(config) {
config.title = 'Aurelia';
config.options.pushState = true; // <-- this line
config.map([
//...
]);
}
}
-
Настройте сервер для поддержки PushState. В основном это означает, что ваш сервер должен перенаправить все неизвестные маршруты/URL-адреса на домашний URL-адрес (адрес вашего приложения Aurelia -
index.html
,/home/index
...).Этот шаг зависит от используемой серверной технологии. То есть для ASP.NET MVC, так вы определяете конфигурацию маршрута:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
// url: "{*pathinfo}" - this redirects all server side calls
// to Home/Index (default route)
// with this single change, HTML5 push state is enabled
routes.MapRoute(
name: "Default",
url: "{*pathinfo}",
defaults: new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional
}
);
}
}
Изменить: Dwayne Charrington имеет хорошую статью о PushState на своем сайте Discover Aurelia, где он объясняет, как настроить PushState на разных серверах таких как Apache, Nginx,.NET Core и Node.js Express.
Ответ 2
Если вы ищете быстрый способ заставить его работать, выполните следующие действия:
-
в конфигурации маршрутизатора в
src/app.ts
:config.options.pushState = true;
-
в index.html корневого каталога добавьте следующее:
<base href="/">