ちょっと興味があり短縮URLのOSSについて調べた。
いくつか調べて試してみたところ、
YOURLSというOSSがドキュメントも多く扱いやすかったので
そのYOURLSの実装についてメモも兼ねて投稿する。
まずソースコードをダウンロードする。
なぜか最新版の1.7ではエラーが出てしまったので
私の場合は1.6を使用した。
基本的にはreadmeを読めば設定できると思うが、
注意点といくつかメモ。
まず、user/config-sample.phpをconfig.phpにリネームする。
で、そのconfig.phpを開いてDBの設定情報を書き込む。
(ユーザ名、パスワード、DB名、ホスト名)
/** MySQL database username */ define( 'YOURLS_DB_USER', 'your db user name' ); /** MySQL database password */ define( 'YOURLS_DB_PASS', 'your db password' ); /** The name of the database for YOURLS */ define( 'YOURLS_DB_NAME', 'yourls' ); /** MySQL hostname */ define( 'YOURLS_DB_HOST', 'localhost' );
あと、31行目のYOURLS_SITEを
実際に設置するURLに変えるのを忘れないように。
define( 'YOURLS_SITE', 'http://site.com' );
もう1点、ルートディレクトリにある
sample-public-front-page.txtをindex.phpにリネームする。
以上の内容でサーバーにファイルを転送してから、
設置したURL/admin/install.phpを叩けばインストールできる。
(1.7で私の環境の場合、なぜかここでエラーがでた)
ちなみに私が設置したのは下記URL。
http://url.516.jp/
(後日追記)
海外IPからスパムの踏み台にされていたので
ベーシック認証をかけました。ID/PASSともに「516」でアクセスできます。
これで使えるようになるのだが、
改善したほうが良いと思われる注意点を2点。
まず1点目、短縮したURLの末尾に「+」をつける事で
そのURLのクリックされた統計情報が閲覧できる。
ただ、デフォルト設定では管理者しか統計情報を見れないが
config.phpの50行目をtrueからfalseに変更することで、
不特定多数の人でも見れるようになる。
define( 'YOURLS_PRIVATE', false );
そこでの問題点だが、falseの状態で
設置したURL/admin/ にアクセスすると
これまで第三者が短縮したURLのログが見れてしまうだけでなく
その過去の情報を削除する事もできてしまう状態になる。
そのため、admin/ にはアクセス制限をかける必要があるだろう。
私の場合は、簡単にBASIC認証をかけた。
次に2点目、
これは使いはじめてすぐに気付く事であるが、
短縮したURLが連番になってしまうのである。
つまりURLの末尾の数字を手入力で前後させる事で、
他の人の短縮URLが見れてしまう。
特に実害はないだろうが、あまり良いURL設計とはいえない。
なにか乱数を生成するPGでも差し込まなくてはいけないかと思ったが
YOURLSのプラグインなるものが用意されていた。
これもreadmeを読めば分かるが、
/user/plugins にアップロードしてから、
/admin/plugins.php にアクセスして有効化する事ができる。
以上です。
どれぐらいクリックされたとかの統計情報が見れるのはいいなと思ったが、
調べてみると、bit.lyとかgoo.glでも統計は見れるんだな。
色々と勉強になりました。