さくらサーバーにアップしたHTMLファイルは拡張子がなくても表示できる

サーバーにHTMLファイルをアップしてアクセスする時、URLの最後に.htmlの拡張子を付けたファイル名を指定することと思います。

http://abc.com/123.html みたいな感じですね。

index.htmlなどは省略できることが多いですが、それ以外のファイルの場合、URLの最後にファイル名を拡張子付きで指定します。それを当たり前だと思っていました。

しかし、レンタルサーバーのさくらインターネットは、アップロードしたHTMLファイルに対して、.htmlの拡張子がなくても表示できるみたいなんです。独自の仕様なのか分かりませんが。。。

 

HTMLファイルをアップロードしてみる

下記の2つのURLにアクセスしてみて下さい。

http://mega004.sakura.ne.jp/test2.html
http://mega004.sakura.ne.jp/test2

両方とも同じ表示になります。
sakura-html02

アップロードしているのは、「test2.html」というHTMLファイル、1つだけです。

なぜか拡張子なしのURLも同じように表示されてしまいます。

 

拡張子のないファイルをアップロードしてみる

次にローカルで拡張子のない「test」という名前のファイルをテキストエディタで保存し、先のURLと同じさくらサーバーにアップしました。

その結果が下記のリンクです。
http://mega004.sakura.ne.jp/test

表示はこんな感じ。
sakura-html01

さくらサーバーは、拡張子のないファイルをアップロードすると、ファイル中に記述されたテキストだけが表示されるようです。

このURLに.htmlを付けてアクセスしてみます。

http://mega004.sakura.ne.jp/test.html

そうすると、404のエラーが返ってくるんですね。
sakura-html03

これ、普通ですよね。ファイルがないんですから。

 

拡張子なしのURLから.htmlありのURLに転送してみる

HTMLの拡張子があってもなくても、同じページが表示されるということは、なにかの間違いで、両方のURLが検索エンジンにインデックスされる可能性があるかもしれません。

仮に拡張子なしのURLから、拡張子ありのURLに転送するとします。

HTMLファイルをアップロードした時のURLを例にすると、.htaccessに下記のように記述すれば転送できます。本来なら。。。

Redirect permanent /test2 http://mega004.sakura.ne.jp/test2.html

 

ただ、さくらサーバーの場合、.htaccessの記述だけで転送できません

実際に転送する場合は、「test2」という拡張子なしのファイルを実際にアップロードしておかないと転送されません。

ファイルの実体があるかないかがポイントのようです。

前述の例のようにHTMLファイルの場合、拡張子ありなしでも表示する仕様を優先するみたいですね。