自前で短縮URLを用意するYOURLS

2010年11月28日 公開

一度に140字しか扱えないマイクロブログヒウィ比ー利用増大の影響で、短縮URLの利用もかなり伸びていることでしょう。世の中には、いろいろな短縮URLサービスがあります。

でも、これ他人任せにしておいて大丈夫? という疑問。今やクラウド化が流行で、短縮URLサービスなんかもある意味クラウド化の一つのような気がするけれども、URLを圧縮して転送してくれるサービスがいつ終了するかわからないわけで。終了しないまでも、仕様変更とかややこしい。

アドレスバー

さらに、spamやら騙しリンクやら、一見するとわからない短縮URLが増えてきて、たいへん! 信用が高いとは言えない短縮URL。それを打開するために、短縮URLが参照しているURLを調べるサービスとかもあることはあるんだけれども、面倒臭い。

だったら、短縮URL生成を自前でやればいいわけです。世界最大級の通販も、世界最大級の動画サイトも、世界最大級の写真共有サイトも、外国の新聞社も、その辺は自前で用意しているようですね。よーし。

ところで、なぜ短縮URLなんて必要?

ヒウィ比ーなんて使ってないし……と思えば、不要のヒトも多いでしょう。でも、たとえばグーグルマップを使って場所について打合せをしている場面で、「じゃ、地図はメールで送っておきます」なんてなことになったら、どうよ?

たとえば南牧村役場の場所を伝えるのに、このようなURLです。

http://maps.google.co.jp/maps?f=q&source=s_q&hl=ja&geocode=&q=%E5%8D%97%E7%89%A7%E6%9D%91%E5%BD%B9%E5%A0%B4&sll=36.321908,139.003294&sspn=0.024895,0.045748&brcurrent=3,0x601c2764e490f955:0x351c45926d9a34fc,0&ie=UTF8&hq=%E5%8D%97%E7%89%A7%E6%9D%91%E5%BD%B9%E5%A0%B4&hnear=%E5%8D%97%E7%89%A7%E6%9D%91%E5%BD%B9%E5%A0%B4&z=15&iwloc=A

メールで勝手に折り返されちゃった場合、5行とか6行とかに渡ってしまいます。相手がインターネット的な事情を理解していて、その分割された行を丁 寧に繋ぎ直して地図を見てくれたらいいですが、1行目だけで地図を見ようとすると、もはやその情報は全く役に立たないことでしょう。

これを、せめて1行で表現できるように圧縮できたらなぁ——、というのが短縮URLの効能です。

【註】2011.08

グーグルマップは独自で短縮URLのサービスを開始したようです。

http://gigazine.net/news/20110824_googlemap_url_shortner/

そして、巷のサービスを使うのではなく、自分の意思で継続したり削除したりできるよう、管理権を掌握したいのです、というのが今回の目的。

短いドメインを用意しよう

圧縮されたドメインが「http://s.photopierre.com/xyz/」でもいいです。でも、せっかく短くするんだから「photopierre.com」の部分も短くなるといい。でも、ニッポンでインターネットが世に広まってから干支も一巡り以上。なかなか1文字2文字の空いているドメインが見つかりませんでした。そもそも、3文字以上じゃないと駄目なコト多いですし。

というわけで、フォトピエールでは「gnpp.jp」というドメインを取得しました。

  • Gunma(群馬)
  • Nanmoku(南牧)
  • Photo 
  • Pierre(フォトピエール)
  • .jp(日本)

だと思っていただけたら、これまた幸い也。

YOURLSを使う

いろいろな道具がありますけれども、今回は、オープンソースのYOURLSを使うことにしました。こんなことくらいなのになかなか多機能で便利そうな気配なので。

YOURLS

【リンク】http://yourls.org/

こゆとき、外国語がサラっと理解できないから余分な時間を無駄に費やしてしまいます。社内公用語を英語にすることが国際化だ、とは言いませんけれども、さーっと流し読みして理解できるといいですな。

この度、使わせていただくのは、バージョン1.5。zipファイルをダウンロードして展開すると、いろいろファイルが登場します。

YOURLSファイル構成

各種設定の前に、MySQLを用意

データベースを使って元URLと圧縮URLを紐付けするようになっているらしいので、MySQLを用意します。

  • ユーザー名
  • パスワード
  • データベース名
  • データベースホスト

YOURLS設定

ひとまず、この中の、[includes]→[config-sample.php]を開いて、各種設定をします。フォトピエール的バイアス不要の場合は、http://yourls.org/#Config 見ればよろし。

まずは、14行目から始まるMySQLの設定

configサンプル

'(クォーテーション),(コンマ);(セミコロン)などの記号を紛失しないように。

  • YOURLS_DB_USER
    MySQLのユーザー名
  • YOURLS_DB_PASS
    MySQLのパスワード
  • YOURLS_DB_NAME
    MySQLのデータベース名
  • YOURLS_DB_HOST
    データベースのホスト。localhostのことが多いかも
  • YOURLS_DB_PREFIX
    データベースのテーブル名のプレフィックス。データベースに何かこだわりの構成が必要でなければこのままで。
続く33行目からのオプション設定

config

  • YOURLS_SITE
    運用するドメイン。末尾の「/」は不要。フォトピエールの場合は「http://gnpp.jp
  • YOURLS_HOURS_OFFSET
    タイムゾーン。ニッポンなら「9」、ミッドウェイなら「-11
    “Timezone GMT offset”って書いてあるのでGMTに対する数字を入れるのかと思ってしまいましたが、実際には、サーバーの時間との時差を記します。ニッポンのサーバーでニッポン時間ならば「0」でした。
  • YOURLS_UNIQUE_URLS
    短縮前のURLが同じだったとき、新たに短縮URLを生成するか否か。
    • true
      元URL短縮URLは1組のみ生成
    • false
      同じ元URLに対して、リクエストした数だけ短縮URLが生成される(bit.lyなどのように)
  • YOURLS_PRIVATE
    管理ページにパスワードをかけるか否か。運用してみて不便を感じるまでtrueでいいでしょう。
  • YOURLS_COOKIEKEY
    クッキーをハッシュ値化するための暗号鍵で、利用者が記憶しておく必要のないもの。自分で決めるのが難しければハッシュキージェネレーターが用意されているので、何度かリロードしてみて表示されたどれかにしておけばよいでしょう。逆に、ダウンロードして展開したconfig_sample.phpに書かれているモノをそのまま使うのは芳しくないと思われます。一度はジェネレーターを開いて、何か違うモノにした方がセキュアと言えるでしょう。
  • yourls_user_passwords
    管理ページにログインできるユーザーとパスワード。1行の左のクォーテーションで囲まれた方にはユーザー名、「=>」に続く右側のクォーテーションで囲まれた方には、そのユーザーのパスワード。コンマで区切って複数のユーザーを指定することも可能。「'username2' => 'password2'」などの使わない値は消去しておかないと、乗っ取られやすい。
    例: 'photopierre' => 'password', 'ahoyaro' => 'otherpass'
    この例では、「photopierre」というアカウントに「password」というパスワード、「ahoyaro」というアカウントに「otherpass」というパスワードの2つを設定したという意味です。
60行目からの短縮ルール設定

config例

  • YOURLS_URL_CONVERT
    • 36
      大文字小文字を区別しない(英字+数字の36文字で)
    • 62
      大文字小文字を区別する(英字大文字小文字+数字の62文字で)
  • yourls_reserved_URL
    短縮URLとして使用されない予約されたキーワードのリスト。 文字列がランダムに生成されると偶然否定的な意味の単語のような組合せになることがあるわけで、潜在的に紛らわしいキーワードを定義しておく。
    例:'porn', 'faggot', 'sex', 'nigger', 'fuck', 'cunt', 'dick', 'gay'

includes/config_sample.phpとして開きましたが、これを、user/config.phpとして保存。

そしたらインストール

zipファイルを展開したファイル群に、user/config.php を加えたものを全部、使うサーバーにアップロードします。アップロード完了後、そのサーバーの /admin/ にアクセスすると、インストール確認画面(うちの場合なら http://gnpp.jp/admin/)。

[Install YOURLS] をクリックすると、インストールが始まるよー!

インストール完了画面

ありゃ、「.htaccess」が無いぜと来たよ。http://code.google.com/p/yourls/wiki/htaccess を参考に、作ってアップロード。ちなみに、ルートにインストールした場合。サブディレクトリにインストールしたならば、RewriteRuleのファイル名の前にディレクトリ名が必要。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /yourls-loader.php [L]

ちなみに、wwwナシで統一する方法なんかも書き加えておくといいかもね!

では、さっそくログイン

改めて /admin/ にアクセスするとログイン画面が表示され、ログインする。

管理画面

あんれま、ちゃっかりYOURLSが先に登録されるようになってる! こりゃ、いいね。じゃ、試しに http://gnpp.jp/yourls にアクセスしてみると → ちゃんと http://yourls.org が表示される! すんばらし。

では、早速、「Enter the URL」にフォトピエールのURL http://www.photopierre.com を入れて、URLを圧縮してみましょう。ちなみに、その右側にある「Custom short URL」には「pp」と入れてみましたよ。そしたら、こんな。

URL圧縮例

いきなり、ソーシャルへの投稿画面なんかも付属して来ちゃうわけですね。なるほどー。

ブックマークレットとかAPIとか

付属する機能もいろいろある。/admin/tools.php を開くと、ブックマークレットやら、APIの使い方が出てくる。にゃるほどね!そうすると、URL圧縮が便利になったり、他のアプリケーションから自動的に短縮URLを作り出して引き出すことができるということね(たぶん)。

例えば、twitterfeedなどでYOURLSを使うにはどうしましょう?

  1. 自分のYOURLS管理画面にアクセス、「Tools」をクリック
    YOURLS管理画面
  2. 後半「Secure passwordless API call」の項にあるsignature tokenを記憶
    signature tokenは、この辺り
  3. twitterfeedの管理画面から編集画面に入り、Advanced Settingsの中を調整。Shorten link throughに【custom】を選択して出現するテキストフォームに、先ほどの記憶したsignature tokenを利用して、入力。
    http://設置したドメイン/yourls-api.php?action=shorturl&format=simple&signature=【記憶したsignature token】&url=%@
    twitterfeed管理画面

やりたいことに1歩近づけた気がする。

【追記】2012.11

連番ではなく乱数にするプラグインAssign random keywordsについて書かれています。→いとーけーのページ

.