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

Как удалить # из URL в Aurelia

Может кто-нибудь объяснить шаг за шагом, как мы можем удалить # из URL-адреса в Aurelia

4b9b3361

Ответ 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([
                //... 
            ]);
        }
    }
  1. Настройте сервер для поддержки 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="/">