5

反対の例をいくつか見てきましたが、次のように、アンカー/ハッシュURLから非アンカーURLに移行しようとしています。

From: http://old.swfaddress-site.com/#/page/name
To:   http://new.html-site.com/page/name

http://karoshiethos.com/2008/07/25/handling-urlencoded-swfaddress-links-with-mod_rewrite/の例はどれも私には機能していません。REQUEST_URI中にあるように聞こえます/#/stuffが、私も私のApache(2.0.54)もそれを認識していません。

アイデア、過去の経験、成功はありますか?

4

4 に答える 4

13

以降#はフラグメントであり、Webサーバーに送信されません。そこのどの時点でもキャプチャすることはできません。それらをキャプチャするには、クライアント側のアプローチを使用する必要があります。

于 2010-08-04T18:55:13.053 に答える
2

@RobRuchte:window.location.hashを使用して、正規表現の代わりに置換を使用する方がよいのではないでしょう

var redirectFragment = window.location.hash.replace(/^#/,'');
if ( '' !== redirectFragment ) {
    window.location = 'http://new.html-site.com' + redirectFragment;
}
于 2012-05-17T16:37:52.617 に答える
1

私はあなたがリンクした投稿の著者です。Wrikkenは正しいです。途中で何かがURLを壊さない限り、名前付きアンカーの後のコンテンツはサーバーに送信されません。クライアント側では、swfaddressリンクを別のドメインの対応するURLにリダイレクトするために、ランディングページに次のようなJavaScriptが必要です。

var re = new RegExp('#(.*)');
var redirectFragment = re.exec(document.location.toString());
if (redirectFragment!=null)
{
    document.location = 'http://new.html-site.com'+redirectFragment[1];
}
于 2010-08-04T21:05:45.380 に答える
0

@m14tによる回答の修正版を使用しました。これは、 http : //example.com/path/to/page # fragment- > http://example.com/path/to/page/fragment のようなリダイレクトで機能します。リダイレクトのも連結したことに注意してください。そうしないと、リダイレクトのフルパスを取得できません。新しいファイルパスが古いファイルパスと完全に異なる場合、これは機能しません。 window.location.pathname

var redirectFragment = window.location.hash.replace(/#/,'/');
if ( '' !== redirectFragment ) {
    window.location = 'http://example.com' + window.location.pathname + redirectFragment;
}

私の場合、断片化されたリンクを個々のページに組み込む必要がありました。これは、WebサイトのSEOを改善するために一般的に行われていることの一部です。

于 2017-08-10T21:10:33.617 に答える