2016-04-23 17 views
0

.htaccessにURLを書き直す必要がありますか?ここで私の問題の説明です。htaccessの#タグを含むURLを書き換える必要があります

URL:下記に述べたように、私はこれを試してみましたwww.example.com/vison.html

、それ:www.example.com/about.php#vision

のように書き換える必要があります動作しません。

RewriteRule ^vison.html$ about.php#vision [L] 
RewriteRule ^our-vision.html(.*)$ about.php$1 [L,NC] 
+0

これはクエリ文字列ではありません。これはクライアントサイドのものです。これは動作しません。クエリ文字列やその他のものだけを書き換えることができます。 –

答えて

1

短い答えは:.htaccess!を使用することは一切できません!

長い答え:それはクライアント側のみを使用しているよう

#文字の後の部分は、ウェブブラウザからサーバへ送信されることはありません。

「書き換え」のこのタイプは、クライアント側のJavaScriptを使用して行う必要があります。

hashchangeイベントはあなたのための出発点であるかもしれない:

window.addEventListener('hashchange', function() { 
    var hash = location.hash.substr(1); 
    window.location.href = "/" + hash + ".html"; 
}); 

あなたはまた、(単一ページのアプリケーション)をSPAを調べる必要があります。このようなソリューションを構築するのに役立つフレームワークはたくさんあります。また、popstateイベントやそれを取り巻くメカニズムのような、ハッシュに依存しない最新のテクニックがあります。

あなたが始めるのに役立つ可能性の枠組みのカップル:

更新

現在の.htaccessセットアップを見てみると、まるであなたがそうしたいかのように見えますあなたの質問テキストが暗示しているものとは逆のもの - 誰かがvison.htmlを要求したときに、about.php#vision - とにリダイレクトしたい場合は、の逆ではありません。それが本当であれば、はい、あなたは、符号化されているから#文字を防ぐためにもNEフラグ(NO ESCAPE)Rフラグ(REDIRECT)を追加することで.htaccessファイルを使用して、それを行うことができます

RewriteRule ^vison.html$ about.php#vision [NE,R,L] 
+0

ありがとう@anders tornblad –

関連する問題