Javascript Angular 6项目刷新后显示404错误
刷新angular页面时会出现404服务器错误,如果手动导航到搜索栏中的目录,也会出现同样的错误。我通过IIS服务器托管 只有在使用Javascript Angular 6项目刷新后显示404错误,javascript,html,angular,angular6,Javascript,Html,Angular,Angular6,刷新angular页面时会出现404服务器错误,如果手动导航到搜索栏中的目录,也会出现同样的错误。我通过IIS服务器托管 只有在使用ngbuild--prod构建angular项目并将其上载到web服务器时,才会出现此问题。很多人说应该使用hash方法,但我不想在我的url中显示hash,这是一种非常古老的方法。有些人还说我应该在我的中更改我的标记,但这没有起作用 这是我index.html中的标记,如果有用的话 <head> <!-- META DATA --> <
ngbuild--prod
构建angular项目并将其上载到web服务器时,才会出现此问题。很多人说应该使用hash方法,但我不想在我的url中显示hash,这是一种非常古老的方法。有些人还说我应该在我的
中更改我的
标记,但这没有起作用
这是我index.html中的
标记,如果有用的话
<head>
<!-- META DATA -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- APP -->
<title>SebastianElstadt</title>
<base href="/">
<link rel="icon" type="image/x-icon" href="assets/images/app-icon.png">
<!-- STYLES -->
<link rel="stylesheet" href="[fontawesome cdn]">
</head>
塞巴斯蒂安内斯塔特
我还使用了一个组件,如果输入的URL与我定义的任何路径都不匹配,就会显示该组件。但是它没有被显示出来
总之,每当我刷新页面或手动在angular站点的搜索栏中导航时,它都会显示404服务器错误页面。我不想使用哈希方法。我不知道您使用的是哪台服务器,但如果您不想使用哈希方法,则必须将每个请求重定向到运行angular应用程序的index.html 如果服务器找不到路由/your/sub/route并显示“404未找到”。您应该检查Angular应用程序的部署。它需要基于http服务器的特定配置。例如,对于Apache,在项目根目录中需要以下.htaccess文件
重新编写引擎打开
#如果请求了现有资产或目录,请按原样转到该资产或目录
RewriteCond%{DOCUMENT_ROOT}%{REQUEST_URI}-f[或]
重写cond%{DOCUMENT\u ROOT}%{REQUEST\u URI}-d
重写规则^-[L]
#如果请求的资源不存在,请使用index.html
重写规则^/index.html
您可以通过创建web.config文件来解决此问题:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="index.html" />
</files>
</defaultDocument>
<rewrite>
<rules>
<rule name="AngularJS Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
<security>
<requestFiltering allowDoubleEscaping="true">
<fileExtensions>
<add fileExtension=".json" allowed="true" />
</fileExtensions>
</requestFiltering>
</security>
<directoryBrowse enabled="true" />
<staticContent>
<remove fileExtension=".woff" />
<remove fileExtension=".woff2" />
<mimeMap fileExtension=".woff" mimeType="application/font-woff" />
<mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
</staticContent>
</system.webServer>
</configuration>
这将解决您的问题,将.htaccess文件添加到项目的根目录中
然后把这个内容
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [L]
</IfModule>
选项-多视图-索引
重新启动发动机
#句柄授权头
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_URI}(+)/$
重写规则^1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.html[L]
“旧”并不意味着“坏”。作为一个初学者,我宁愿在我的URL中看到一个散列,也不愿重新配置我的服务器。但要回答您,这是一个HTTP服务器问题,而不是角度问题。您应该使用正确的标记来标识您的服务器,否则您将无法获得适当的答案。您需要使用我按照步骤为IIS服务器设置web.config文件,但现在每当我导航到我的网站时,它只会显示500-Internal serverError@Sebastian那么您的web.config文件中可能有错误。我不知道您的配置是什么,也不知道您是如何构建您的服务器环境的,所以很难说,除非您分享更多关于这方面的信息。我只是想确定,我是要在代码中到处更改还是直接复制?您可以按原样使用它。还可以使用IIS自动生成此文件。我添加了web配置文件的标题,以便您可以直接使用。谢谢,但无论何时添加web.config文件并添加此代码,都会加载500-内部服务器错误。值得注意的是,此解决方案需要在IIS上安装“重写模块”。你可以用谷歌搜索或者使用“web平台安装程序”工具。