こんなサービス()を作りました。
実はすでに,yourlsという有名な短縮リンクのライブラリを使っているのですが、yourlsってサブドメインに使えないんですよね。
あと複数利用もできないです。同じドメイン上の違うディレクトリで、というのが無理。
yourlsはアクセス解析とかAPIもありますし、さすが結構使いやすいだけにそういうとこが残念なのですが、
ということで探した結果、PHPだとこれくらいしかなかった。
mikecao/shorty: A simple URL shortener for PHP
小さなライブラリですが、もともと最小限の機能でいいからサブディレクトリで複数使えるようなやつないかな、というところだったので、渡りに船です。
では解説。簡単です。(まぁ、.htaccessの記述(qの部分)に詰まって結局ライブラリ全部軽く目を通してやっとできたわけなのですが。README.mdもっとしっかりしてくれ……)
データベースを作ります。データベース名は任意。
ディレクトリを移動します。公開したいURLがサブディレクトリなら、cd ~/domain.name/public_html/subdir/
みたいにそこまで移動します。
以下コマンド。
git clone https://github.com/mikecao/shorty.git
mv shorty/* .
mysql -u [username] -h mysql2007.xserver.jp -p [db_name] < database.sql
rmate .htaccess
rmate config.php
.htaccessは以下をコピペでOK。allow-originしないとAPI的な使い方はできないので必要に応じて。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [QSA,L]
# Header set Access-Control-Allow-Origin "*"
config.phpは以下に例を示します。
$hostname = 'https://114514.click/subdir';
$connection = new PDO('mysql:dbname=db_name_here;host=mysql2007.xserver.jp', 'username', 'pass');
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$salt = '5';
$padding = 6;
そしたら、もう完成なので、GETリクエストしてみましょう。
https://114514.click/subdir/index.php?url=https://google.com&format=text
できましたでしょうか。
データベース見てみるとわかりますが、(SQLでもわかるか)簡単ですがヒット数も見れるみたいです。
リファラーとか見れないのは惜しいですが、まぁ、。リファラーと地域情報も格納してくれればyourlsと何ら機能的には変わらないくらいになるんですけどねぇ…
まぁ、取り急ぎで作れますし、手順分かってれば3分くらいでAPIまで作れちゃうので、良いと思います。