下午好,
有没有可能在htacces重定向中添加一个规则,比如http://example.com/portfolio到http://example.com/index.php#portfolio,同时不在浏览器的URL域中显示最后一个地址?
我知道hast无法发送到服务器,但一定有某种方法可以屏蔽这些丑陋的URL。
可能与问题相关,也可能不相关,但我有以下jQuery代码
if(history.pushState){
history.pushState(null,null,'#'+$(this).attr('class'));
}else{
location.hash = '#'+$(this).attr('class');}
}
if(window.location.hash){
var hash = window.location.hash.substring(1);
if(jQuery.browser.webkit){
$('html,body').animate({scrollTop:$('#'+hash).offset().top-2*88},'slow');
}else{
$('html,body').animate({scrollTop: $('#'+hash).offset().top-3*88-10},'slow');}
}
}提前感谢您的任何解决方案。
发布于 2012-12-19 05:04:21
我知道hast不能发送到服务器,但肯定有某种方法可以屏蔽这些丑陋的URL。
没有。通过“向浏览器屏蔽它”,这意味着浏览器不知道它请求的URL在服务器端已经被破坏了。它认为它已经请求了http://example.com/portfolio,因此这就是它在地址栏中显示的内容。
如果你想在浏览器中隐藏#portfolio片段,那么这个片段就变得完全无用了。浏览器是客户端和服务器之间唯一可能利用此类片段的实体,但浏览器看不到它,因为服务器将其隐藏起来。对该片段没有任何用处的服务器将其对浏览器隐藏起来。您不能让浏览器加载一个不同于地址栏上显示的URL的URL,该URL没有某种形式的框架(隐藏URL)或某种javascript技巧来更改地址栏中的内容。
如果服务器在内部将/portfolio重写为/index.php#portfolio,则会立即丢弃该片段。index.php的执行并不知道它的存在,因为只有浏览器关心这个片段。
如果你不想在你的URL中有碎片,你应该重新设计你的内容是如何被传递的。
https://stackoverflow.com/questions/13938487
复制相似问题