リンクにブログコードが混入してリンク切れになる


概要

リンクパスに意図しない「ブログコード」が挿入され、リンク切れ(404エラー)が発生する

発生条件

  • リンクパスが /archives/... のように、ルート相対パス(スラッシュ始まり)で出力されている場合。

  • config.server.php の REWRITE_PATH_EXTENSION に指定されていない拡張子のファイル(例:.jww , .dwg など)を扱っている場合。

発生例

Twigを使用し、カスタムフィールドでアップロードしたarchivesファイルのパスをそのまま出力した場合などに発生します。

テンプレート側の記述:

<a href="{{ entry.fields.jww.value.path }}" download>Download</a>

期待される出力:

<a href="/archives/path/to/file.jww" download>Download</a>

子ブログでの実際の出力:

a-blog cms の仕様により、config.server.php の REWRITE_PATH_EXTENSION に指定されていない拡張子のファイルで、かつパスが / から始まる場合、システムが「ブログコード」を補完してパスの書き換えを行います。

<a href="/ブログコード/archives/path/to/file.jww" download>Download</a>

※ config.server.php 内で定義されている拡張子(pdf, doc, xlsx等)は自動書き換えの対象外となります。

対策方法

以下のいずれかの方法で回避可能です。

1. class属性に acms_no_rewrite を追加する

リンクに acms_no_rewrite クラスを付与することで、システムによるパスの自動書き換えを無効化できます。

HTML

<a href="{{ entry.fields.jww.value.path }}" class="acms_no_rewrite" download>Download</a>

2. config.server.php の設定を変更する

config.server.php の REWRITE_PATH_EXTENSION に、対象となるファイルの拡張子を追記します。

define('REWRITE_PATH_EXTENSION', 'pdf|doc|docx|ppt|pptx|xls|xlsx|lzh|zip|rar|jww|dwg');