Diff of 拡張子のないURIへのアクセスを可能にする


*拡張子のないURIについて [#c529ebb4]
 最近はファイルに「.php」や「.cgi」といった拡張子を付けずにアクセスさせることがトレンドである。たとえば以下のようなアドレスを見たことのある人は結構多いのではないだろうか。
#pre{{
 ttp://example.com/login
}}
 こういう風にする理由はいくつかあるらしいが、たとえば使っている言語が仮にphpだとして、
#pre{{
 ttp://example.com/login.php
}}
 としてしまうと、遠い将来、phpではなくzzzという別の言語を採用したときに、
#pre{{
 ttp://example.com/login.zzz
}}
 となってアドレスが変わってしまうので、そういったことをを防ぐためというのがある。また、使用している言語(PHP、Perl、Rubyなど)を諸々の理由から隠したいというのもあるらしい。
 理由はどうあれ、将来的には拡張子を付けない方が一般的になるだろうし、トレンドを採用していると訪問者にこのサイトはちゃんとメンテされているという印象を持たれるので採用しても損はないと思う。
***参考サイト [#be204307]
 [[クールなURIは変わらない  -- Style Guide for Online Hypertext>http://www.kanzaki.com/docs/Style/URI.html]]
 [[第21回 “使いやすいURI(URL)”の設計を考える(続編) - 技術者視点のユーザビリティ考:ITpro>http://itpro.nikkeibp.co.jp/article/COLUMN/20070501/269950/]]
**FilesMatchを使う [#q084659d]
 とはいってもXOOPSでは採用できそうなファイルがあまりない。強いて挙げるならログインページ、ユーザ登録ページ、パスワード再発行ページの三つのファイルになるだろうか。
#pre{{
 ttp://example.com/user.php
 ↓
 ttp://example.com/user

 ttp://example.com/register.php
 ↓
 ttp://example.com/register

 ttp://example.com/lostpass.php
 ↓
 ttp://example.com/lostpass
}}
 これを実現するために.htaccessにFilesMatchという設定を書き込む。
#pre{{
<FilesMatch "^register$|^user$|^lostpass$">
  ForceType application/x-httpd-php
</FilesMatch>
}}
 ただ上の方法はこの話題が出ているサイトの多くに書かれているのだが、ある条件下でエラーになってしまうようだ。なので下の書き方の方がいいようである。
#pre{{
<FilesMatch "^register$|^user$|^lostpass$">
  SetHandler php-script
</FilesMatch>
}}
 以上の設定は「register」「user」「lostpass」というファイルはphpファイルとしてユーザにアクセスさせる、という内容になる。そして、元々存在する「register.php」「user.php」「lostpass.php」から拡張子を削除したファイルをサーバにアップロードしておけば、拡張子のないURIへのアクセスが可能になる。念のために拡張子があるファイルも残しておいた方がいいだろう。つまり、中身は同一で名前だけが違う(拡張子があるものとないもの)を一緒に置いておくということだ。勿論、拡張子のないURIへアクセスさせるためにはtheme.htmlなどに拡張子のないファイルへのリンクを書く必要がある。
#pre{{
 <a href="http://example.com/register">登録する</a>
}} 
}}
***参考サイト [#u6b0f680]
 [[406 Not Acceptable>http://www.xdelta.net/blog/FreeBSD/2005/12/09/p54]]
**Options +Multiviews [#sd91e2f7]
 .htaccessに以下の記述を追加すると、拡張子のないファイルでも適当に判別してアクセスしてくれるらしいが試していないので詳細は不明。
#pre{{
Options +MultiViews
MultiViewsMatch Handlers
}}
***参考サイト [#ke9af951]
 [[Multiviewsのススメ>http://blog.fuktommy.com/1216313223]]

[PR]