.htaccess 在apache服务器上部署的Angular 13应用程序在刷新时抛出404错误

e1xvtsh3  于 2022-11-16  发布在  Apache
关注(0)|答案(2)|浏览(197)

我已经创建了一个原型Web应用程序,需要部署在ubuntu操作系统上的apache服务器上。我已经构建了我的Web应用程序,并在本地机器上托管以供测试。我已经启用了.htaccess设置,

RewriteEngine on

# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]  
RewriteCond %{REQUEST_FILENAME} -d  
RewriteRule ^ - [L]

# Rewrite everything else to index.html to allow html5 state links
RewriteRule ^ index.html [L]

现在,我的屏幕URL看起来像,http://localhost/PROJECT-NAME/user/31/case/99这样的URL是从另一个链接在index.php中可用的重定向,一旦角页面加载,一切都很好,当我刷新浏览器,它抛出了一个404 Error
可用环境是:

Angular CLI: 13.3.3
Node: 14.17.4
Package Manager: npm 8.7.0
OS: linux x64

Angular: 
... 

Package                      Version
------------------------------------------------------
@angular-devkit/architect    0.1303.3 (cli-only)
@angular-devkit/core         13.3.3 (cli-only)
@angular-devkit/schematics   13.3.3 (cli-only)
@schematics/angular          13.3.3 (cli-only)

有没有人能在这里帮助我,到目前为止我尝试了各种各样的htaccess和技术。
请让我知道,如果一个需要更多投入在这里,将不胜感激你的帮助。

n3schb8v

n3schb8v1#

所描述的问题听起来像是您没有使用正确的重写规则,Apache无法正确处理请求。这就是为什么如果您尝试直接访问漂亮的URL,它们无法工作的原因。(当您通过主页导航子页面时,URL正常工作,因为它很可能是一个SPA)。请尝试在您的.htaccess文件中使用以下重写规则:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
holgip5t

holgip5t2#

您应该将此添加到***app.module***中:

{ provide: LocationStrategy, useClass: HashLocationStrategy }

相关问题