【发布时间】:2014-05-09 11:40:28
【问题描述】:
我有一个带有多个路由的 Angular 应用程序,例如:
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 将请求重定向到 index.html(使用视图参数),前提是它没有应该解析的实际文件?
【问题讨论】:
-
/app/programs/script.js是有效文件吗? -
是的,如果没有我当前的 .htaccess(如问题所示),此文件将正确解析。
-
这个技巧也适用于 Angular 2。
标签: angularjs .htaccess redirect web-applications routing