雑文発散

«前の日記(2017-01-18) 最新 次の日記(2017-01-20)» 編集
過去の日記

2017-01-19 [長年日記]

[Crowi] Crowi で複数スラッシュの path を作ってしまうと、 HTTP サーバの設定によってはうまく動かない

Crowi でページの移動時などに連続したスラッシュを入れることができてしまう。例えば、こんな風に。

/path/to//page

Crowi 内での path は、単なる文字列なので、これでも通っていた。そして、Crowi を起動して直接使っている場合は、これでも問題なく動いていた。

一方で、SSL での接続をしたくて前段に nginx などを置いて利用するパターンがある。現実の運用としてはこちらのほうが多い気もする。

その nginx では、スラッシュが複数ある場合は、単独のスラッシュとして処理をする機能がデフォルトで ON になっている。

これが有効な場合は、次のような挙動になりそう。

  1. Crowi で表示されるリンクは複数スラッシュの URL( /path/to//page
  2. リンクをクリックして nginx へ URL をリクエスト( /path/to//page
  3. nginx は複数スラッシュを単独化して Crowi へリクエスト( /path/to/page
  4. Crowi は単独スラッシュの path を DB から探すが見つからない

ということで、複数スラッシュを入力された場合はページ移動などができないようにする修正を入れてみた。

ちょっと直し方が雑なんだけど、いったんこの方法でカバーしてみようかな、と。