Twitterのようにユーザーごとのディレクトリを作成するには?

この記事は約3分で読めます。
記事内に広告が含まれています。

twitterurl by you.

ミニブログ開発において

2.新規登録ページ(ID=URL、ニックネーム、パスワード、メールアドレス、パスワード用ヒント)

といった要件があったのですが、ユーザーIDをURLにする、つまり上記キャプチャ画像のようにユーザーIDがひとつのディレクトリ(フォルダ)として見える必要があるのですが、これはどうやって実現するんだろう、と初期のころ悩んでいました。
もちろんTwitterの中の人がユーザーが登録されるたびにサーバーに「右クリック→新規フォルダ作成」とかやっているわけではないだろう(笑)。ユーザー登録されたら、サーバー上に自動的にディレクトリを作成して・・・とも考えたのですが、それもなんだか原始的なような気がします。

そこで、ちょっと思いだしたのですが、実際のURLとは違うURLで表示させる技があったなぁ、と思って調べて実践してみました。


参考にしたのはURLをリダイレクト・リライトする場合の.htaccessの設定例
結論から言えば「・・・/wackey」とURLに入力すれば「・・・/index.php?username=wackey」と同じことをするようにhtaccessの設定をするということです。
そこで、実験してみました。

テスト用PHPファイルの用意

すごくシンプルなコードです。

<html>
<head>
<title>htaccesstest</title>
</head>
<body>
<?php
    print $_GET["username"];
?>
</body>
</html>

このソースをindex.phpという名前で保存してサーバーに設置しました。これは何をするのかというとURLのphpファイル名の後に「?username=wackey」と入れるとusernameに入れられているwakceyとう文字をブラウザの画面に表示するものです。

http://htaccess.musilog.net/a/?username=wackey

試しにusername=の後のアルファベットを書き換えてみてください。

テスト用.htaccessファイルの用意

今度は参考にしたサイトを元に同じような動きをするように下記のように書いて「.htaccess」というファイル名でindex.phpが置いてあるフォルダに置いてみました。

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?username=$1 
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?username=$1 

テストURLはhttp://htaccess.musilog.net/b/bakaです。
今度はTwitterと同じようにディレクトリに指定したbakaという文字が表示されます。これで、実現しました!
もちろん、ここではhttp://htaccess.musilog.net/b/index.php?username=bakaというアドレスにアクセスしていることと同じことが実現出来ています。

試しにhttp://htaccess.musilog.net/b/の後のアルファベットを書き換えてみてください。

というわけでここでいうindex.phpにusername=●●が指定されていたら、そのユーザーのタイムラインを表示するというロジックを書けば、TwitterっぽくユーザーごとのURLが出来ます。

コメント

タイトルとURLをコピーしました