10sec Tips
10秒tips
LIFF URLの「?」がそのまま保持される!2次リダイレクト仕様変更のポイントと対策

「LIFF URLでパラメータを渡しているのに、なぜか値が崩れる……」「リダイレクト後のURLがおかしい?」そんなトラブルに直面していませんか? LIFF SDK v2.31.1以降、LIFF URLのクエリパラメータ値に含まれる「?」の処理仕様が変更されました。値に含まれる「?」が「&」へ自動置換されず、値の一部としてそのまま保持されるようになります。 今回は、仕様変更の要点と、開発・マーケ担当者が確認すべき影響範囲・対策をサクッと解説します!
⚡ 10秒でわかる!今回の仕様変更(ビフォー・アフター)
LIFF URLから最終画面(2次リダイレクト先URL)へ遷移する際、値の中にある「?」の扱いが変わります。
| 項目 | 変更前(旧仕様) HTML | 変更後(LIFF v2.31.1〜) HTML |
| パラメータ値の「?」 | 「&」へ置き換えられる(別パラメータとして誤認識) | 「?」のまま値として保持される(本来の値が維持) |
変換例?key=foo?bar | ?key=foo&bar(key= foo, bar=undefined等) | ?key=foo?bar(key= foo?bar) |
| 実務への影響 | 「?」以降が別パラメータに意図せず分離していた | 1つの値として正しく受け取れる(旧仕様前提の処理は要修正) |
🔍 どのようなLIFF URLが影響を受ける?
すべてのLIFF URLが影響を受けるわけではありません。特に以下のケースで確認・見直しが必要です。
- ⚠️ パラメータ値に「別のURL」を含めている場合
- 例:
[https://liff.line.me/](https://liff.line.me/){liffId}/?return_url=[https://example.com/path?campaign=spring](https://example.com/path?campaign=spring) - 変更前は内部の「?」が「&」に変換されていましたが、変更後は「?」がそのまま残るため、リダイレクト後のURL解釈やパース処理に影響します。
- 例:
- ⚠️ URL文字列を「?」や「&」で独自に分割(split)している場合
- URLを単純な文字列操作で分解している実装では、値の中の記号まで区切り文字として認識され、データのズレが発生する可能性があります。
- 💡 単純な文字列パラメータは影響なし!
?store=shibuyaや?utm_source=lineのような一般的なキー&バリューであれば影響はありません。
💡 トラブルを防ぐための「3つの鉄則」
- 外部URLを直接渡さず「ID」で管理する
- パラメータ値に別のURLを含めるとURL構造が複雑化します。
?campaign_id=spring2026のように識別IDだけを渡し、遷移先URLはサーバー側やアプリ側で紐付ける設計が最も安全です。
- パラメータ値に別のURLを含めるとURL構造が複雑化します。
- パラメータ取得は必ず「liff.init() 完了後」に行う
- LIFF URLの追加情報は、初期化処理中に一時的に
liff.stateへ退避され、初期化後に復元されます。初期化前に直接URLを参照したり書き換えたりせず、必ずawait liff.init()の完了後に値を取得しましょう。
- LIFF URLの追加情報は、初期化処理中に一時的に
- 実機・各種ブラウザ環境で挙動を検証する
- 端末(iOS/Android)やLINEアプリ内外のアクセス経路によって挙動が異なる場合があります。本番配信前に、ユーザーが実際に利用する環境で遷移とパラメータ受け渡しのテストを行いましょう。
🏁 今回の結論
今回の仕様変更は本来のURL規格に沿った改善ですが、「旧仕様の変換挙動を前提にした実装」が残っていると予期せぬ不具合につながる可能性があります。 パラメータにURLや記号を含む運用を行っている場合は、早めに実装と2次リダイレクト後の動作テストを実施しましょう!
🤝 LIFF・LINEマーケティングのご相談ならフォーグローブにおまかせ!
- フォーグローブは、LINEヤフー社より「LINEミニアプリ部門」および「コミュニケーション部門」の2部門で認定を受けているTechnology Partnerです。
- LIFFアプリの設計・開発から、複雑な仕様変更に伴う改修、高度なLINEマーケティングの運用までトータルで伴走支援いたします。
- 「自社のLIFF URLが影響を受けるか確認したい」「安全なパラメータ設計に見直したい」という際は、ぜひお気軽にご相談ください!