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路由,将跳转到实际资源。
幕布斯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
- 3 回答
- 0 关注
- 622 浏览
添加回答
举报
0/150
提交
取消