[apache] mod_rewrite を使って拡張子を省略する
mod_rewriteを使って World Wide Web Consortium (W3C) のサイトのように .html を省略できるようにする方法についての記事です。
w3.org では、たとえば、
http://www.w3.org/TR/html5/introduction
http://www.w3.org/TR/html5/introduction.html
のように.htmlを省略できます。
これを mod_rewrite で実現するためには、以下のように RewriteCond で拡張子なしのリクエストを見極めて、RewriteRuleで /foo/bar -> /foo/bar.html に rewrite すればよいようです。
詳しくは公式ドキュメント mod_rewrite - Apache HTTP Server をご覧ください。
補足
w3.org では mod_rewrite 方式ではなく、Content Negotiation が有効になっていることにより拡張子が省略できるようです。この機能はデフォルトでは有効になっておらず、以下のように有効化します。
共有レンタルサーバーではほとんど使えるところはないかもしれません。デフォルトで有効となっていない理由はおそらくパフォーマンス劣化と非直観的動作なので、よく理解して利用すると良いと思います。
w3.org では、たとえば、
http://www.w3.org/TR/html5/introduction
http://www.w3.org/TR/html5/introduction.html
のように.htmlを省略できます。
これを mod_rewrite で実現するためには、以下のように RewriteCond で拡張子なしのリクエストを見極めて、RewriteRuleで /foo/bar -> /foo/bar.html に rewrite すればよいようです。
詳しくは公式ドキュメント mod_rewrite - Apache HTTP Server をご覧ください。
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} /[^./]+$ RewriteRule (.*) $1.html
補足
w3.org では mod_rewrite 方式ではなく、Content Negotiation が有効になっていることにより拡張子が省略できるようです。この機能はデフォルトでは有効になっておらず、以下のように有効化します。
Options +Multiviews
共有レンタルサーバーではほとんど使えるところはないかもしれません。デフォルトで有効となっていない理由はおそらくパフォーマンス劣化と非直観的動作なので、よく理解して利用すると良いと思います。
コメント
コメントを投稿