htaccess和哈希隐藏

时间:2012-12-18 17:39:34

标签: jquery .htaccess hash

下午,

是否可以将htacces重定向中的规则放在http://example.com/portfoliohttp://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');}
    }
}

提前感谢任何解决方案。

1 个答案:

答案 0 :(得分:2)

  

我知道hast没有发送到服务器,但必须有某种方式来掩盖这些丑陋的URL ..

没有。通过“从浏览器屏蔽它”,这意味着浏览器不知道它请求的URL在服务器端被破坏了。它认为它已经请求http://example.com/portfolio,因此它在地址栏中显示的内容。

如果您想从浏览器中隐藏 #portfolio片段,那么该片段就会变得毫无用处。浏览器是客户端和服务器之间唯一可以从这样的片段中获得任何用途的实体,它看不到它,因为服务器正在隐藏它。对片段零使用的服务器将其隐藏在浏览器中。您不能使浏览器加载与地址栏上显示的URL不同的URL,而不使用某种框架(隐藏URL)或某些javascript技巧来更改地址栏中的内容。

如果服务器在内部将/portfolio重写为/index.php#portfolio,则会立即丢弃该片段。 index.php的执行不知道它是否存在,因为只有浏览器关心片段。

如果您不想在网址中添加片段,则应重新审核内容的传送方式。