概述:
我有一个使用的AngularJS应用程序,$locationProvider.html5Mode(true)它是从Apache服务器提供的.到目前为止,我使用了从其他人访问的源代码,我只需要为angularJS的HTML5模式重定向到index.html.所以我.htaccess为我的/app文件夹的文件.
.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine on
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Rewrite everything else to index.html to allow html5 state links
RewriteRule ^ index.html [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
修改:
然后我添加了Grunt来缩小在/dist应用程序文件夹中生成的整个解决方案(所以现在缩小的解决方案位于/ app/dist).我现在想将我的应用程序的整个流量路由到缩小版本,而不会让用户更改链接.所以,在实践中我想将每个来自/ app的调用重定向到/ app/dist.
目录结构现在:
app
dist
minified versions(css,html,js)
Run Code Online (Sandbox Code Playgroud)
我尝试使用了一些条件,从这里在/ app的.htaccess和移动在/ app/DIST其他.htaccess文件,但没有成功.我甚至不知道这两者是否可以这样组合.我知道我可以使用dist文件夹作为/ app,但我不会真的想要这个,因为/ app是一个repo,它更容易保持更新.那么如何通过重定向来实现这一目标呢?
另外,作为第二件事,是否有可能以某种方式放置标志,所以我让alpha用户使用普通(未缩小)版本来进行更好的调试?
更新:
我在这里添加了一个示例项目.我只保留了上面显示的初始.htaccess文件,您可以检查两个版本(/test和/test/dist)是否如上所述.此外,它可能有一些未使用的代码和依赖项,但我只是从我的项目中删除其他部分(不要判断:D).
为此,我使用了AngularJS 1.4.8的初始配置,可能会产生一些错误,如此处和此处所述.随意将AngularJS版本更新为1.5.8(Angular …
如何将所有请求重定向到我的静态AWS S3网站到index.html,以便我可以使用AngularJS的HTML5模式?
我最近(通过我无尽的喜悦)了解到#,使用HTML5模式可以在URL中使用AngularJS .但是,我从这个答案中知道,这需要在服务器上进行一些设置,因为所有请求都必须重定向到正确的html文件(在这种情况下index.html),以使其正常工作.
我使用AWS S3的静态网站托管我的网站.我尝试将此添加到我的重定向规则:
<RoutingRules>
<RoutingRule>
<Redirect>
<ReplaceKeyWith>/</ReplaceKeyWith>
</Redirect>
</RoutingRule>
</RoutingRules>
Run Code Online (Sandbox Code Playgroud)
和
<RoutingRules>
<RoutingRule>
<Redirect>
<ReplaceKeyWith>index.html</ReplaceKeyWith>
</Redirect>
</RoutingRule>
</RoutingRules>
Run Code Online (Sandbox Code Playgroud)
但是我遇到了太多重定向的问题.
有没有办法在AWS S3中使用静态网站托管进行必要的重定向?
启用 html5 模式时实际上会发生什么?这可能会回到单页应用程序中路由如何发生的问题
我之前的感知(可能是错误的):查看 angularjs 应用程序中的脏 url,我总是假设它是 url 片段,不同的视图绑定到不同的片段。简而言之,我们已经拥有所有页面,并且正在为特定 url 显示特定片段。
现在,为了删除哈希,您必须将 html5mode 设置为 true,并且必须告诉服务器为除 api 之外的每个请求返回索引页面。有点像
app.get('/ap1',some);
//more apis
*
*
*
//in the end
app.get('*' ,(req,res,next) => req.sendFile('index.html'));
Run Code Online (Sandbox Code Playgroud)
每次 url 更改时,请求不应该发送到服务器并重新加载页面吗?
html5mode 对浏览器有什么作用?在像 React 和 Angular(2 或更大)这样的较新框架中,您甚至不必启用 html5mode(除了在 Angular 2 中,您必须告诉您想要哪种 url)。
这是什么巫术?
angularjs ×3
html5mode ×3
.htaccess ×1
amazon-s3 ×1
apache ×1
html ×1
javascript ×1
mod-rewrite ×1