Как удалить index.html из URL-адреса на веб-сайте на основе angularjs

Я не нашел способа удалить index.html из URL-адреса, потому что это выглядит очень уродливо.

mydomain.com/index.html#/myview1 
mydomain.com/index.html#/myview2

Есть ли способ удалить эту часть, например, этот URL-адрес будет настолько четким, где находится пользователь.

mydomain.com/myview1
mydomain.com/myview2

Tnx заранее за ваше время.

Изменить: я просто нахожу, как это может работать:

mydomain.com/#/myview1
mydomain.com/#/myview2

что намного лучше, чем с index.html.

Но все же, если есть способ более короткого решения, дайте мне знать.


person Pnctovski    schedule 17.07.2013    source источник
comment
Как вы удалили index.html из URL?   -  person Alavaros    schedule 30.10.2013
comment
Читать правку Алаварос.   -  person Pnctovski    schedule 06.12.2013
comment
@Pnct, как вы удалили index.html, как вы упомянули в своем редактировании?   -  person anvarik    schedule 03.01.2014
comment
@anvarik просто удалите index.html из конфигурации маршрутизации и везде, где вы используете его как ссылку. И, как я писал выше в качестве своего редактирования, вы должны использовать только символ #. Но если вы спрашиваете о полном удалении index.html без #, вам следует попробовать активировать html5mode для $location, как ответил Эдуард Гамонал на мой вопрос.   -  person Pnctovski    schedule 03.01.2014
comment
Перезапись URL (mydomain.com/myview1 -> mydomain.com/index.html#/myview1) не вариант? Часто бывает чище и меньше работы для принудительного применения дружественных URL-адресов извне (за пределами вашей структуры, скажем, через mod_rewrite), чем возиться с сантехникой, особенно в клиентских средах пути-y, таких как Angular/Backbone/и т. д.   -  person    schedule 14.05.2014


Ответы (4)


Возможно, этот подход может помочь:

Добавьте $locationProvider.hashPrefix();, который удалит index.html из вашего URL, в конфигурацию app.js. Не забудьте добавить новую зависимость. После этого ваш app.js может выглядеть примерно так:

 angular.module('myApp', [
  'ngRoute'
]).
config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) {
  $locationProvider.hashPrefix(); // Removes index.html in URL

  $routeProvider.otherwise({redirectTo: '/someroute'});
}]);

Обратите внимание, что это не удаляет хэштег. Вы можете найти свой новый маршрут по адресу: .../app/#/someroute

person Robin Wieruch    schedule 15.03.2015

активировать html5mode для $location

person Eduard Gamonal    schedule 17.07.2013

Вам придется проделать некоторую работу на стороне сервера, чтобы настроить это. html5mode дает вам часть пути, но как только пользователь обновится, ссылка на файл будет неправильной. Вы хотите, чтобы ссылки были постоянными и, по-видимому, ими можно было поделиться. По сути, убедитесь, что любой запрос на url.com/myapp/{etc} (или что-то еще) перенаправляется на index.html, и пусть ваше угловое приложение сортирует маршрутизацию.

person liamness    schedule 15.03.2015

Использовать

<rewrite>
    <rules>
        <rule name="RewriteRules" stopProcessing="true">
            <match url=".*" />
            <conditions logicalGrouping="MatchAll">
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.html" />
      </rule>
  </rules>
</rewrite>

И на главной странице

<base href="/" /> 

И в вашей конфигурации используйте

$locationProvider.html5Mode(true);

Он должен работать

person Shashank    schedule 07.10.2018