当我从Linux切换到Windows托管时,Angular默认路由停止工作

时间:2019-03-13 17:29:49

标签: angular .htaccess angular-ui-router

tl; dr:

当某人访问 mywebsite.com 时,默认路由应重定向到 mywebsite.com/about 。这不起作用,我的组件也无法加载到路由器出口中。

长版:

我最近从Linux托管切换到Windows托管。 第一步,我上传了我的投资组合网站,它是一个纯粹的Angular / Typescript应用程序。

此站点在linux上运行良好,但是在Windows上,默认路由似乎已停止工作。这是路线:

const appRoutes: Routes = [
  { path: '', redirectTo: 'about', pathMatch: 'full' },
  { path: 'about', component: HomeComponent },
  { path: 'skills', component: SkillsComponent },
  { path: 'interests', component: InterestsComponent }
];

这是我的 .htaccess 文件(由于未在其中安装IIS Rewrite Module,因此必须在Windows主机上使用):

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^(.*) /index.html [NC,L]

因此,正如我所说:当我访问我的网站时,默认(大约)路线不会加载。 一旦我点击了任何路线(通过导航栏),它们就会正确加载。用F5刷新它们也可以。

我对RewriteRules一无所知,或者我是否可以使用特殊的规则来解决此问题。

1 个答案:

答案 0 :(得分:0)

对我感到羞耻:经常这样,我在SO上发布 后就解决了问题。

我的Windows托管提供程序为我要托管的每个应用程序都应用了基本的web.config文件。 因此,我在IIS根目录中有一个web.config,在网站目录中还有一个web.config和.htaccess文件。

我通过删除所有web.config文件(都来自域根目录和网站目录)并仅将.htaccess文件保留在网站目录中来解决此问题。