2011-10-11 54 views
0

我使用本Almans插件哈希变化跟踪:AJAX搜索引擎优化 - 背部及前进按钮

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

而且我修改我的网络配置,这样当你进入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一样的干净地址。

这可能吗?

回答

0

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

当你省略了尖锐的(这是#角色的名字),一个页面请求将启动。

如果你想搜索引擎优化的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> 

这将在文档中的每个<a>元素绑定一个onclick,具有href属性与基本URL开始。

+0

抱歉,但此方法不适合我。当用户按下连结我抢链接的价值,并把它传递给通过Ajax PHP和再找回一些网页使用jQuery画它。我不打算去了页面phisically – David

+0

我的回答套装你的方法,你将“物理上”停留在同一页面,捕获所有使用的链接'hashChange'事件,而禁用JS的用户仍然可以使用链接进行浏览。散列更改后,页面不会卸载。 –

+0

捕获向后和向前按下的按钮怎么样? – David