刷新后将 Angular 2 部署到 GoDaddy 404

map*_*sah 3 web-applications deploying angular

我希望你做得很好。我刚刚部署了一个我最近一直在工作的非营利组织网站(在这里找到:www.leonesistersunited.com)到 Godaddy 使用 CLI 来构建产品。部署后,一切都和预期的一样好。但是,在任何页面上,如果您刷新浏览器,则会收到 404 错误。关于可能导致这种情况的任何想法?是我的问题还是 GoDaddy 的问题?我在 Windows 层 (IIS) 上托管。

谢谢。

Xve*_*gas 5

对于 GoDaddy 虚拟主机是两种不同的解决方案

在 Angular index.html 中写入 base-href

  <base href="/nameOfTheappFolder/">  or
Run Code Online (Sandbox Code Playgroud)

部署 ng build --prod --base-href "/nameOfTheAppFolder/"

在你 angular 6 app.module 调用这个提供者

    providers: [{ provide: APP_BASE_HREF, useValue: '/nameForTheAppFolder/'}]
Run Code Online (Sandbox Code Playgroud)

对于 Linux 托管,您可以像这样执行 .htacces 文件,在其中替换应用程序目录文件夹名称

 <IfModule mod_rewrite.c>
   Options Indexes FollowSymLinks
   RewriteEngine On
   RewriteBase /myappdirectory/
   RewriteRule ^index\.html$ - [L]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule . /myappdirectory/index.html [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

对于 Windows 托管,您执行 web.config

         <?xml version="1.0" encoding="utf-8"?>
          <configuration>

          <system.webServer>
            <rewrite>
              <rules>
                <rule name="Angular Routes" stopProcessing="true">
                  <match url=".*" />
                  <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                  </conditions>
                  <action type="Rewrite" url="./index.html" />
                </rule>
              </rules>
            </rewrite>
          </system.webServer>

          </configuration>
Run Code Online (Sandbox Code Playgroud)