2

午後、

http://example.com/portfolioからhttp://example.com/index.php#portfolioへのようなルールを htacces リダイレクトに入れ、ブラウザの URL フィールドにこの最後のアドレスを表示しないようにすることは可能ですか?

ハストがサーバーに送信されないことはわかっていますが、これらの醜い 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');}
    }
}

解決策を事前に感謝します。

4

1 に答える 1

2

ハストがサーバーに送信されないことはわかっていますが、これらの醜い URL をマスクする何らかの方法が必要です..

ありません。「ブラウザからマスクする」とは、ブラウザが要求した URL がサーバー側で壊れていることをブラウザが認識しないことを意味します。要求したと考えているhttp://example.com/portfolioため、それがアドレス バーに表示されます。

ブラウザからフラグメントを非表示にしたい場合#portfolio、フラグメントは完全に役に立たなくなります。このようなフラグメントを利用できる可能性があるクライアントとサーバー間の唯一のエンティティであるブラウザは、サーバーがフラグメントを隠しているため、それを認識しません。フラグメントをまったく使用しないサーバーは、フラグメントをブラウザーから隠しています。なんらかのフレーム (URL を隠す) や、アドレス バーの内容を変更するための JavaScript トリックがなければ、アドレス バーに表示される URL とは異なる URL をブラウザーに読み込ませることはできません。

サーバーが内部的に に書き換える/portfolio/index.php#portfolio、フラグメントは即座に破棄されます。index.php の実行は、ブラウザのみがフラグメントを気にするため、それが存在することを知りません。

URL にフラグメントを入れたくない場合は、コンテンツの配信方法を作り直す必要があります。

于 2012-12-18T21:04:20.833 に答える