さくらサーバーで日本語のファイル名を上げると見れないのはこうやって解決。


最近Wordpressをあるドメインから別のドメインに移動する仕事があって、その際に以前表示されていた画像が新しいドメインでは表示されないという現象があり、今回はそれについて備忘も兼ねて書いておきます。
ちょっと調べてみると、日本語のファイル名のものが新しいドメインではうまく表示されていないらしい。
ファイルを移動しただけなのに見れない状況で、その日中にアップロードして納品ということだったのでちょっと焦ったんだけど、その日のうちに解決方法もわかったのでなんとかなりました。
多分同じような状況になる人っていると思うので参考になればと思って書いておきます。

これはWordpressの問題ではない

今回問題が発生したのはWordpressの移動作業の際だったんだけど、よくよく調べていくとWordpressだからという問題ではなくてもっとシンプルな問題でした。
これは、日本語ファイル名のファイルをサーバーにあげると参照できないという問題。
そもそも、日本語のファイルを上げる時点でダメなんだけどね、今回はWordpressの移動だったのでファイルをアップするお客さんもその辺のリテラシーがなく、日本語のファイルをバンバン上げられていたので、てそれが問題につながった。
特に今回に関しては、さくらインターネットの共有サーバーに日本語のファイルを上げると参照できないという問題でした。
なので、ここさえ理解して回避できればWordpressの移動に対しても問題なく行うことができます。

さくらサーバーに日本語名のファイルを上げたらどうなるか

実際にさくらサーバーに日本語名のファイルを上げた状態がこちら。
このようにNotFoundのエラーメッセージが出てしまう。
さくらサーバーに日本語名のファイルを上げたらどうなるか<
ローカルからサーバーにファイルを上げる際に問題があるようでした。
日本語名のファイルを上げるときに、その文字コードの扱いに問題があって、僕の場合はFileZillaを使っているのでFileZillaを例にに説明します。

FileZillaでさくらサーバーに日本語名のファイルを上げる方法

FileZillaの左上から設定できるサイトマネージャーの画面。
ここで、各サーバーに接続するための設定をするんだけれど、その中の文字コードというタブがあるのでそこの設定を変更します。
FileZillaの左上から設定できるサイトマネージャーの画面
初期値では自動検出が選択されていると思います。
ここに書かれているようにサーバーの状況によって文字コードを自動検出するようで、これが問題だったみたいです。
なので、今回は真ん中にあるUTF-8を強制というものを選びます。
UTF-8を強制というものを選びます
UTF-8で強制にして画像をあげてみました。
同じくファイルを参照すると、ちゃんと表示されました。
image
この記事を書くためにテストのファイルを上げててわかったんですが、自動検出であげたものとUTF-8強制で上げたもの、2つとも同じファイル名なのにこのようにサーバー上では2つ並んでる。
image
つまりサーバー側で同じファイル名2つを別のものとして認識しているみたい。

基本的に日本語のファイルを上げないようにすればすむ問題で、多くの人は通常のホームページを作っている上ではこの問題にはぶち当たらないと思うんですが、今回の対応のようにWordpressの移動を依頼された場合などはどんなファイルがアップロードされているかわからないので、移動先のサーバーによってはこのような現象が現れたりします。
日本語ファイルが問題ということがわかっても、わざわざ全てリネームしていくのも大変です。
一時はその方法も考えたけど、プラグイン使ったりいろいろしてもダメだった。
結果的に、それでだめだったから今回の根本的な解決方法がわかってよかったんだけど。

今回はさくらサーバーでこの現象が起こったんですが、これはサーバーの環境に依存するので他のサーバーでも起こりえます
ちなみに弊社のホームページで使ってるXserverでは日本語ファイルも自動検出で普通にあげて大丈夫でした。
なのでサーバーによっては何も気づかずにうまくいってる場合もありますが、もし日本語ファイルをアップして表示されないという場合は今回の記事を参考にしてみてください。

[RelService] [Service]