Angular html5mode直接链接回退

时间:2015-02-17 15:02:03

标签: angularjs .htaccess html5-history

我正在LAMP堆栈上设置一个Angular站点,并且我已使用以下命令激活了html5mode:

$locationProvider
    .html5Mode(true)
    .hashPrefix('!#');

加上那是我的.htaccess设置,我是从this gist获得的:

Options +FollowSymLinks

<ifModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !index
    RewriteRule (.*) index.html [L]
</ifModule>

对于支持History API的浏览器,一切正常,如果我喜欢我的主URL,它会优雅地回到hashbang。我的问题在于,有人直接链接到不支持它的浏览器上的History-ified链接。例如:

支持历史记录

example.com =&gt;重定向到=&gt; example.com/home/home是默认页面)

example.com/home/ =&gt;加载得很好

不支持历史记录

example.com =&gt;重定向到=&gt; example.com/!#/home/

example.com/home/ =&gt;没有重定向,一切爆炸,小猫灭亡

我的问题是......当有人直接链接到历史记录链接时,是否有一种有效的方法可以确保回退?即:

example.com/home =&gt;重定向到=&gt; example.com/!#/home

我已经考虑过.htaccess用于重定向特定浏览器,但这看起来很糟糕(坦率地说,我无法让它工作)。我还考虑了<script>中的一个<head>标记,它对历史API支持进行了JavaScript测试+在网址中缺少!#,如果没有则重定向。

这两个看起来都很糟糕,所以我的问题是......有没有正确的方法来做到这一点?如果没有,我需要诉诸这些黑客,如果有人能为我提供至少IE9的.htaccess示例,我会很感激。

0 个答案:

没有答案