2016-12-08 5 views
0

В настоящее время я пытаюсь развернуть мое приложение Angular2 с использованием сборки CLI, теперь это отлично работает, я копирую содержимое дистрибутива в папку в корне моего сервера.Angular2 CLI deploy, useHash

Теперь он работает отлично, но когда я перезагружаю страницу на маршруте, она не работает. После некоторого googling я обнаружил useHash в RouterModule.forRoot(routes, { useHash: true }) решает эту проблему.

Так что мой вопрос: есть ли другой способ, потому что я предпочитаю довольно URL-адреса.

ответ

1

В зависимости от вашего сервера, вы должны добавить правило перезаписи, чтобы перенаправить все на свою страницу index.html. Это решит проблему.

В Apache2, добавьте в ваш .htaccess

<IfModule mod_rewrite.c> 
    Options Indexes FollowSymLinks 
    RewriteEngine On 
    RewriteRule ^index\.html$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.html [L] 
</IfModule> 

В IIS

<rule name="AngularJS" stopProcessing="true"> 
    <match url="[a-zA-Z]*" /> 
    <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="/" /> 
</rule> 

Также имейте в виду, что вы, вероятно, придется добавить исключение для API маршрута (по соглашению,/апи).

+0

Позвольте мне попробовать некоторые правила .htaccess и вернемся к нему позже. – LVDM

+0

Работает отлично благодаря помощнику! (ответ будет принят через 7 минут). – LVDM

+0

Нет проблем, не забудьте в следующий раз выполнить поиск! – Sakuto