我有一些路线的角度应用程序,例如:
site.com/ site.com/page site.com/page/4
使用angular的html5路由模式,当您从应用程序内单击指向链接的链接时,这些链接可以正确解决,但是当您进行硬刷新时,这些链接当然会出现404错误。为了解决这个问题,我尝试实现基本的htaccess重写。
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_METHOD} !OPTIONS RewriteRule ^(.*)$ index.html [L]
这适用于角度请求,但是当我尝试在我的域内加载脚本或进行ajax调用时,例如:
<script src="/app/programs/script.js"></script>
该脚本不会加载-它的请求被重定向,并且它尝试加载index.html页,因为.htaccess认为它应该重新路由该请求- 不知道此文件确实存在,并且应该加载该文件而不是重定向。
只有在没有实际文件可以解析的情况下,htaccess才可以将htaccess将请求重定向到index.html(使用视图参数)吗?
使用如下代码段:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^(.*) /index.html [NC,L]
如果有一个,这将跳至实际资源,index.html对于所有AngularJS路由,这将跳至实际资源。
index.html