【问题标题】:How to set .htaccess to allow shebang in url如何设置 .htaccess 以允许在 url 中使用 shebang
【发布时间】:2012-03-31 23:47:37
【问题描述】:

我正在进行的一个项目正在使用 pushState,但由于 Internet Explorer 无法正确处理它,因此在更改 URL 时使用了 shebang。是否可以设置 .htaccess 以允许在 url 中使用 shebang 但将其删除并重定向它。到目前为止,如果我转到http://www.mydomain.com/#!/whatever.php,它只会显示我的索引页面。但我想做的是,如果你转到 http://www.mydomain.com/#!/whatever.php 并将其重定向到 http://www.mydomain.com/whatever.php

【问题讨论】:

  • 花点时间在 Wireshark 上;客户端从不#或之后的任何内容发送到服务器。

标签: .htaccess redirect shebang


【解决方案1】:

不,使用.htaccess 是不可能的,因为# 之后的所有内容根本不会发送到服务器。您必须使用 javascript 进行重定向。

【讨论】:

  • 我尝试过使用 javascript,但是当您在路径中使用 shebang 标记时,javascript 不会检测到任何内容。如果尝试过alert(window.location.pathname);,它只会在尝试http://www.mydomain.com/#!/index.php时显示/作为路径
  • 使用:alert(window.location.hash); 获取#(哈希)部分
【解决方案2】:

好的,所以我想出了问题的答案。因此,javascript 是唯一确定的方法,因此由于在 URL 中使用 shebang,它会将您定向到域的索引页面,但仍保持 URL 相同。所以我只是在我的页面顶部添加了以下内容。

$(document).ready(function(){
    var loc = self.document.location;
    if(loc.hash){
        var href = loc.hash.split("#!/");
        window.location = loc.protocol +'//'+ loc.host +'/'+href[1];
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多