質問: アンカーリンクをクリックさせた後URLに#hogeを表示させないやり方は、JavaScriptで実現する方法はよく紹介されてcますが、JavaScriotがオフのブラウザでも実現させる為に、JavaScript無しで実現する方法を探しています。 これはどこの参照元からでもというわけではなく、同一ドメイン内のある特定のページからの参照の場合だけでいいので、例えば、参照元からは、 ``` http://XXXXXXXX.com/ ``` と、通常のトップページへのリンクを貼っておき 、.htaccessで、 ``` RewriteCond %{HTTP_REFERER} ^(.*)hogehoge.html$ RewriteRule ^(.*) $1/index.hrml#hoge [L] ``` のような書き方をして実現できないかと考えたのですがうまくいきません。 しっかりと、 ``` http://XXXXXXXX.com/index.hrml#hoge ``` と表示されてしまいます。 よく、PCとスマホを別ページで持ちつつ、.htaccessで参照先を振り分けることにより、同一URLで表示内容を変えるという事をされている方がいらっしゃいますが、どうして上記の書き方ではうまくいかないのでしょうか? または、このような事はどうやったら実現出来るのでしょうか?
回答: URLフラグメント(URLで`#`と、その後に続く文字列)はそもそもサーバに送信されないため、.htaccessファイルでいくら設定をおこなっても駄目です。 .htaccessファイルはApacheの設定ファイルで、Apacheはサーバですので、そもそもURLフラグメントの文字列自体を受け取っていないのです。 よって、分岐処理は不可能です。 このため、必然的にクライアントサイド(ブラウザ側)で変更するしか無いのですが、JavaScriptを除外してしまうとそれも不可能です。