我找到了一种方法来更改页面网址,而无需使用
刷新页面window.history.pushState
但是我无法登陆页面,或者在不同的浏览中打开它,我找不到错误页面
for exmp:
www.mydomain.com/profile
我想登陆此链接并转到个人资料页面。 我该怎么办。
<script>
$(document).ready(function(){
//set trigger and container
var trigger = $('#nav ul li a'),
container = $('#container');
//do on click
trigger.on('click', function(e){
/***********/
e.preventDefault();
//get the link location that was clicked
pageurl = $(this).attr('href');
//to change the browser URL to th if(pageurl!=window.location){
window.history.pushState({path:pageurl},'',pageurl);
/* reload content without refresh */
//set loading img
$('#container').append('<div id = "loading">WAIT... <img src = "img/ajax-loader-small.gif" alt="Currently loading" /></div>');
//change img location to center
$("#loading").css({"position": "absolute", "left": "50%", "top": "50%"});
//get the trigger to reload the contents
var $this = $(this),
target = $this.data('target');
container.load(target + '.php');
return false;
});
});
// fix url in the browser when click on backward and foreword arrows
$(window).bind('popstate', function() {
$.ajax({url:location.pathname+'?rel=tab',success: function(data){
$('#content').html(data);
}});
});
</script>
答案 0 :(得分:1)
您需要确保您的网络服务器(例如Apache或Nginx)接受对该网址的请求并正确地重定向。有很多方法可以做到这一点。例如,您的Web服务器可以将所有或大多数请求重定向到进一步路由请求的中央PHP文件。这通常优选地在更复杂的系统中。但是,对于更简单的情况,使用类似mod_rewrite的内容可能就足够了(如果您使用Apache作为Web服务器)。
假设您的设置允许,将以下内容放在文档根目录中的.htaccess文件中会导致mod_rewrite将所有请求转发到www.mydomain.com/profile
到www.mydomain.com/profile.php
:
RewriteEngine on
RewriteRule "^/profile$" "profile.php" [L]
这是一个非常简单的示例,只适用于该特定页面,但如果您有许多页面遵循相同的命名标准,那么您也可以应用更通用的规则。
如果您使用Apache之外的其他内容来为您的网页提供服务,那么几乎所有这些功能都有相似的功能。