Режим AngularJS HTML5 с UI Router на Apache - PullRequest
0 голосов
/ 11 мая 2018

Несколько дней назад я включил режим html 5 в своем приложении angular (1.5.8) с этим кодом:

$locationProvider.html5Mode({enabled:true,requireBase:true}).hashPrefix('!');

Позже я прочитал Настройка сервера Apache для режима html5 с помощью ui-router .

После выполнения этих настроек я сталкиваюсь с 2 проблемами:

  1. Перезагрузка браузера, перенаправляет на домашнюю страницу для каждой глубоко вложенной ссылки приложения.
  2. Любая ссылка, поступающая извне (по электронной почте), всегда перенаправляет на домашнюю страницу.

Я играл с

  1. mod_rewrite as-in с использованием <Directory>, FallbackResource на apache.
  2. изменение путей к ресурсам в index.html (с использованием относительного URI и полного квалифицированного URI)
  3. добавление / удаление тега base HTML. (пробовать такие опции, как '/', '<sitename>')

Но мне еще предстоит преодолеть эти проблемы.

Вот подробные настройки на моем локальном хосте:

  1. Я развертываю на apache через виртуальный хост (а не .htaccess).
  2. Мой каталог развертывания: / Users / <name> / Sites / <sitename> (я в Mac OS)
  3. Мой index.html состоит из следующих частей:

        <head>
          <base href="/">
          <!-- SPELLS 1-->
            <script src="/js/jquery.min.js"></script>
            <script src="/js/bootstrap.min.js"></script>
            <script src="/js/angular.min.js"></script>
            <!-- more scripts / css et al -->
        </head>
    
  4. Моя конфигурация Apache (2.4.28) выглядит следующим образом:

        <VirtualHost *:80>
        ServerName <servername>
        DocumentRoot "/Users/<name>/Sites/<sitename>"
        #LogLevel debug
        LogLevel debug rewrite:trace6
        RewriteEngine on
        RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
        RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
        RewriteRule ^ - [L]
        RewriteRule ^ index.html [L]
    
        Options Indexes FollowSymLinks
        Require all granted
    
        </VirtualHost>
    

Может кто-нибудь помочь мне с точной настройкой?

1 Ответ

0 голосов
/ 13 мая 2018

Я не фанат флага L, если вы не планируете переписывать URL-адрес более одного раза (он заканчивает текущую итерацию, а переписанный URL снова проходит через правила).Вам не нужны опция Indexes и проверка каталога, если только вы не хотите, чтобы Apache автоматически выводил список содержимого каталога.Попробуйте это:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule ^ index.html [END]
...