トップページ > 記事閲覧
【雑談】アンカー付きURLへの301リダイレクト留意点
投稿日 | : 2021/01/25(Mon) 02:01 |
投稿者 | : Yujiro |
参照先 | : |
サイト内の構成変更やドメイン引越しでURLそれ自体が変わる場合に使う「301リダイレクト」の
留意点です。
(本記事は.htaccessの記述についてです)
以下のトラブルはHAIKに限ったことではありませんが、HAIKの仕様から来るものと勘違いし
て時間を浪費しないために記します。(解決は簡単)
===============
トラブル内容
アンカー付きのURLを301リダイレクト先に指定すると、
「#」が「%23」に文字化けし、正常なURLにならない。
例) ページ名「テスト」 アンカー「target」
sample.com/index.php?テスト#target
↓ [R=301,L] で上記URLをリダイレクト先にすると
sample.com/index.php?テスト%23target
と出力される。
私が疑ったのは、HAIKがページ名に日本語を使えるため、不要なエンコードが働いていない
かと。そこでページ名を英数半角にして実験するも結果は同じ。
また .htaccess ファイルの文字コードがうっかり間違っていないかとかと調べ時間を使う。
===============
解決策
[R=301,L] に NE フラグを追加
[NE,R=301,L] とする。
結論としてはApache 2.4サーバーの仕様で、デフォではエンコードが入るようです。
解決のための参考ページ
https://helpx.adobe.com/jp/experience-manager/kb/Apache-RewriteRule-with-anchor-not-redirecting-properly-AEM-Dispatcher.html
================
ちなみに・・・
HAIK は QHM 当時からあるところの・・・
#redirect(転送先)
この記述で301リダイレクトが書けるようですが、この「転送先」にアンカーを含めて書いて
正常リンクするかどうかは実験していません。(下のコメントで結果を追記しました)
もしもダメなら.htaccess に上記の方法で記述して対処できますね。
================
アンカーなどに関するHAIKマニュアル参考ページ
↓アンカー(&aname(ID);)
http://manual.haik-cms.jp/index.php?aname
↓目次 (#contents)
http://manual.haik-cms.jp/index.php?contents
(目次機能はアンカーを応用しており、そもそもが「見出し」自体がアンカーとしての役割を持つ)
Re: 【雑談】アンカー付きURLへの301リダイレクト留意点
投稿日 | : 2021/02/04(Thu) 15:36 |
投稿者 | : Yujiro |
参照先 | : |
追記です。(過去の作業を見直して)
「リダイレクト元のURL」に「#」の記述でアンカーが含まれているとき、
[R=301,L] の記述でも
「アンカー含みのリダイレクト先URL」は「#』が文字化けしない。(正常にリダイレクト)
この条件であれば [NE,R=301,L] の記述でなく、[R=301,L] の記述でOK。
過去には以上の条件でアンカー含みをリダイレクト先にしていて問題がなかったために
気づかなかったのでしょう。
全くややこしく面倒なことですがこの事実を見つけました。
他にも何か条件があるかもなので少し注意です。
Re: 【雑談】アンカー付きURLへの301リダイレクト留意点
投稿日 | : 2021/01/31(Sun) 22:52 |
投稿者 | : tomzo |
参照先 | : |
Yujiroさん
貴重な、情報提供ありがとうございます。
Re: 【雑談】アンカー付きURLへの301リダイレクト留意点
投稿日 | : 2021/01/28(Thu) 15:58 |
投稿者 | : Yujiro |
参照先 | : |
HAIK内蔵の301リダイレクトの #redirect(転送先)について
やはりアンカー付きURLでは「#」が「%23」に文字化けします。
よって、必要な方は.htaccessに[NE,R=301,L] を書くしかなさげ。