トップページ > 記事閲覧
【雑談】アンカー付き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] を書くしかなさげ。

- WEB PATIO -