まずはじめに
「こんなんルーティングっていうのか?(´・_・`)」
というツッコミは、甘んじて受けます。てか、推奨します。
「推奨するの?(´・_・`)」
やりたいこと
例えば
/pages/index.php?page=1
みたいなURLではなく
/pages/1/
で処理をしたい。ただそれだけ。
それだけですってば(´・_・`)
.htaccess
プログラム単体でできるハナシではなく、サーバ側で、変なURLを受け付けても404にせずにindex.phpで処理をするように制御する必要があります。
そのために、.htaccessの設定をします。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /pages/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /pages/index.php [L]
</IfModule>
実はコレ、Wordpressの.htaccessほぼそのままです。Wordpressをインストールしたディレクトリはこの設定によって、ルート下のindex.phpで全てのリクエストをさばくようになります。Wordpressという巨大システムの根幹はルーティングであるのだなあと、これを見ていると感じてしまいます。
index.php
てなわけで。あらゆるリクエストがindex.phpで処理されるので、その際のURLを文字列として受け取って、処理して、パラメータとして使おうというわけです。
<html>
<?php
$url = $_SERVER['REQUEST_URI'];
$url = str_replace("/pages/", "", $url);
$url = str_replace("/", "", $url);
if (ctype_digit($url)) {
echo "ページ番号 → " . $url;
} else {
echo "数値以外";
}
?>
</html>
受け取ったURL文字列から余計なものを置換で消したあとで、数値に変換する。ただ、それだけのプログラムです。
以上