浏览器中的网址无法导航到相应的路由器链接

时间:2018-05-27 01:48:58

标签: angular apache angular-cli single-page-application angular-routerlink

我在使用angular cli编写的apache web服务器上运行一个单页网站。我有一个主页和多个链接,使用routerlink标签导航,正常工作。但是,当我点击“关于”时,它会导航到website.net/about,一切都很完美,直到重新加载页面或者我在网站引发404错误时手动输入。“

这是主要的应用代码:

的index.html:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Title</title>
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
  <app-root></app-root>
</body>
</html>

app.module.ts:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { RouterModule} from '@angular/router';

import { AppComponent } from './app.component';
import { ProgramsComponent } from './programs/programs.component';
import { AboutComponent } from './about/about.component';

@NgModule({
  declarations: [
    AppComponent,
    ProgramsComponent,
    AboutComponent
  ],
  imports: [
    BrowserModule,
    RouterModule.forRoot([{
        path: 'programs',
        component: ProgramsComponent
      },
      {
        path: 'about',
        component: AboutComponent
      }
    ])
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

app.component.ts:

import { Component } from '@angular/core';
import {ProgramsComponent} from './programs/programs.component';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'Title';
}

app.component.html:

<div id="header" style="text-align:Left">
  <header>
    <a href="../index.html">
      <h1>
        {{ title }}
      </h1>
    </a>
    <nav>
      <div class="nav-comp">
        <a routerLink="/about">About</a>
        <a routerLink="/programs">Programs</a>
      </div>
    </nav>
  </header>
</div>
<router-outlet></router-outlet>

如果可以使用apache web服务器解决这个问题,那么任何帮助和/或链接都会受到赞赏我会打开它来固定它但不希望

2 个答案:

答案 0 :(得分:0)

我猜这个问题出在你的apache配置中,显然你的代码没有问题。

答案 1 :(得分:0)

好的,所以我不得不做一些挖掘,我想在reddit上使用感谢u / vaskemaskine获取.htaccess文件和this post上的sci buff但是我在这里

首先在/var/www/html我必须创建一个名为.htaccess的文件并将此代码放入其中

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

然后为了允许这种情况发生,由于Apache 2.4的变化,我必须AllowOverrides更改<{p}} {/ 1}}

/etc/apache2/apache2.conf

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

然后我在运行<Directory /> Options FollowSymLinks AllowOverride All Require all denied </Directory> <Directory /usr/share> AllowOverride All Require all granted </Directory> <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> 时遇到错误,因为它没有安装,但只需在终端中运行RewriteEngine即可清除