URL в браузере не будет переходить к соответствующему маршрутизатору. - PullRequest
0 голосов
/ 27 мая 2018

У меня есть одностраничный веб-сайт, работающий на веб-сервере apache, написанный с использованием angular cli.У меня есть домашняя страница и несколько ссылок, которые перемещаются с помощью тега routerlink, которые работают нормально.Однако, когда я нажимаю, например, «about», он переходит на сайт website.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, я буду открыт для исправленияэто так, но я бы предпочел не 1017 *

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Хорошо, поэтому мне пришлось немного покопаться, и я хотел бы поблагодарить u / vaskemaskine на reddit за файл .htaccess и 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 в /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 в терминале

0 голосов
/ 27 мая 2018

Я предполагаю, что проблема в вашей конфигурации apache, очевидно, в вашем коде нет ничего плохого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...