URL в браузере не будет переходить к соответствующему маршрутизатору.
У меня есть одностраничный веб-сайт, работающий на веб-сервере apache, написанный с использованием angular cli. У меня есть домашняя страница и несколько ссылок, которые перемещаются с помощью тега routerlink, которые работают нормально. Однако, когда я нажимаю "о", например, он переходит на сайт.net.net/about, и все идеально, пока страница не будет перезагружена, или я вручную не введу сайт 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, я был бы открыт для исправления таким образом, но предпочел бы не
2 ответа
Итак, я должен был немного покопаться, и я хотел бы поблагодарить вас /vaskemaskine на Reddit для .htaccess
файл и sciff на этот пост, но здесь я иду
Итак, сначала в /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
в /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
как это не было установлено, но это можно было очистить, просто запустив sudo a2enmod rewrite && sudo service apache2 restart
в терминале
Я предполагаю, что проблема в вашей конфигурации Apache, очевидно, нет ничего плохого в вашем коде.