【问题标题】:AJAX SEO - back & forward buttonsAJAX SEO - 后退和前进按钮
【发布时间】:2011-10-11 08:54:06
【问题描述】:

我正在使用 Ben Almans 插件进行哈希更改跟踪:

http://benalman.com/projects/jquery-hashchange-plugin/

我还修改了我的 web 配置,这样当你输入 www.mysite.com/test1 时,PHP 会抓取带有 test1 值 的字符串,并将其转发给 JavaScript。 JavaScript 通过 AJAX 将其发送到服务器端脚本并带回 test1 页面

在地址栏中写www.mysite.com/test1 的所有用户都获得了test1 页面。 一切正常。

现在。如果您输入www.mysite.com,您只会看到索引页面,并且有一个指向test1 页面 的链接。 如果你按下它,它会生成地址www.mysite.com/#test1,因为# 哈希更改插件可以在你按下返回按钮时使用 AJAX 将你带回来。

我想要的是不需要那些#标志的这种哈希更改插件或方法或系统。因为我希望用户看到相同的干净地址,例如www.mysite.com/test1

这可能吗?

【问题讨论】:

    标签: javascript jquery hash seo


    【解决方案1】:

    这是不可能的。 # 是位置哈希部分的前缀。哈希通常不会发送到服务器,因此,更改哈希不会导致页面请求。

    当您省略尖号(即# 字符的名称)时,将启动页面请求。

    如果你想要 SEO URL,我建议使用这个"

    <script>
    $(document).ready(function(){
        var base_url = location.protocol + "//" + location.host + "/";
        $("a[href^='+base_url+']").bind("click", function(ev){
            location.hash = $(this).href.substr(base_url.length)
            ev.preventDefault();
        })
    });
    </script>
    <a href="http://www.mysite.com/test1">Link</a>
    

    这将在文档中的每个 &lt;a&gt; 元素上绑定一个 onclick,并带有一个以基本 url 开头的 href 属性。

    【讨论】:

    • 对不起,这种方法不适合我。当用户按下链接时,我获取链接的值并通过 ajax 将其传递给 php,然后返回一些页面使用 jquery 绘制它。我不会物理地访问那个页面
    • 我的回答适合你的方法。您将“物理地”停留在同一页面,使用hashChange 事件捕获所有链接,而禁用 JS 的用户仍然可以使用这些链接进行浏览。更改哈希时,页面不会卸载。
    • 捕获后退和前进按钮怎么样?
    • 您可以使用`replaceState' 方法修改浏览器历史记录。但是,当用户浏览历史记录时,页面将完全重新加载。当您使用哈希时,页面不会完全重新加载。
    猜你喜欢
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多