Knoh, The Knowledge Hub

Facebook はいつからデフォルトで URL に付く PHP 拡張子をやめたの?

回答の背景

Evan Priestley 氏は知る人ぞ知る、Facebook を代表する (元) エンジニアの一人です。Facebook には 2007 年から 2011 年の間に在籍していました。

 

Facebook はもともと昔ながらの、URL とファイルレイアウトが同一構成の PHP サイトとして開発されていた (それぞれの URL がディスク上の .php ファイルに map されている形だ)。この設計は沢山の問題を生んだが、それらの問題は長い間認識しづらかったし、設計を変えることにも躊躇していた。設計を変えるには全てのコードをいじる必要があり、それによって、なにかを壊してしまう危険性があったからだ。

後に canvas pages などをローンチしたとき、それら用に mod_rewrite を使った rewrite rule を apache の設定に追加した。これは 2007 年の出来事で、はじめて Facebook が URL-direct-to-disk のしがらみから解放された時期だったと思う。

2009 年に vanity name (URL に反映されるユーザ固有の文字列) をローンチしたとき、我々はコードを 404 ハンドラ内に実装した。URL が vanity URL っぽければ、ルックアップを実行し、ルックアップに成功すれば通常フローに戻る実装だ。

2009 年 ~ 2010 年に Facebook Lite プロジェクトの開発過程で、我々は MVC っぽくて URL ルーティング機能もついたウェブフレームワークを開発した (名は “Alite” という)。このフレームワークは後にメインのウェブスタックに採用される。Alite は blanket rewrite rule を使い、URL ルーティングをアプリケーション側に任せるといった、1998 年から存在する、その他のスタックとそう変わらないものだ。

僕の知る限り、本体のサイトは (2011 年時点で) 完全に Alite に移行し、Groups URLs などの綺麗な URL (https://www.facebook.com/groups/example/) を回している。これからの新しいアプリケーションは任意の URL のルーティングが可能なので、”.php” の時代はぼちぼち終わりを告げているはずだ。とはいえ、まだまだ “.php” のページや、それらへのリンクが存在するので、古いアーキテクチャの名残りはしばらく存続するだろう。

  

もっと知る