为了账号安全,请及时绑定邮箱和手机立即绑定

htaccess重定向Angular路由

htaccess重定向Angular路由

杨__羊羊 2019-07-26 15:31:08
htaccess重定向Angular路由我有几个路线的角度应用,例如:site.com/site.com/pagesite.com/page/4使用angular的html5路由模式,当您从应用程序中单击指向它们的链接时,这些解析正确,但当您进行硬刷新时,当然会出现404错误。为了解决这个问题,我尝试了一个基本的htaccess重写。RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_METHOD} !OPTIONSRewriteRule ^(.*)$ index.html [L]这适用于角度请求,但是当我尝试在我的域中加载脚本或进行ajax调用时,例如:<script src="/app/programs/script.js"></script>这个脚本没有加载 - 它的请求被重定向,它试图加载index.html页面,因为.htaccess认为它应该重新路由请求 - 不知道这个文件确实存在,它应该加载文件而不是重定向。有没有什么方法可以让htaccess将请求重定向到index.html(带有视图参数),只有当它没有应解析的实际文件时?
查看完整描述

3 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

使用如下代码:

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

如果存在,则跳转到实际资源,并且index.html对于所有AngularJS路由,将跳转到实际资源。


查看完整回答
反对 回复 2019-07-26
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

应用程序请求的directive模板文件存在问题,但文件丢失。在某些情况下,它导致应用程序请求多个脚本文件index.html

如果文件不存在,我们应该发送404响应而不是index.html文件。所以我添加简单的正则表达式模式来识别丢失的文件请求。

RewriteEngine On# If an existing asset or directory is requested go to it as it isRewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -dRewriteRule ^ - [L]# If the requested pattern is file and file doesn't exist, send 404RewriteCond %{REQUEST_URI} ^(\/[a-z_\-\s0-9\.]+)+\.[a-zA-Z]{2,4}$RewriteRule ^ - [L,R=404]# otherwise use history routerRewriteRule ^ /index.html


查看完整回答
反对 回复 2019-07-26
  • 3 回答
  • 0 关注
  • 622 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信