#フレームワークを使わずに以下のルーティングを使って自作したサイトたち
自作SNS
https://test.nieru.net/
ユーザーページサンプル
https://test.nieru.net/admin
https://test.nieru.net/nieru
(利用者募集しております。)
無料レンタル掲示板サイト
https://nieru.net/
掲示板活用サンプル
#フレームワークなし、.htaccessとPHPでURLルーティングする
フレームワーク使わないルーティングはこれでいいよねって思ったので書いてみる
フォルダ構成
ルート
┣ index.php
┣ .htaccess
┗ show
┗ main.html
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
5行目の
RewriteRule ^(.*)$ index.php/$1 [L]
が重要
これを記載すればとりあえずどんなURLでも最初のindex.phpにアクセスさせる・・・らしい。
違ったらごめんなさい。
##index.php
<?php
$path = explode("/",$_SERVER["PATH_INFO"]);
?>
これで現在のURLのディレクトリを配列で取得出来る。
https://example.com/test/hello/bay
にアクセスしている場合
$pathの中は
Array ( [0] => [1] => test [2] => hello [3] => bay )
となっている。
##show/main.html
こちらはコンテンツです。
ブラウザに表示する文字を書きます。
ではURLがhttps://example.com/contents
の時、show/main.html
を表示させてみる。
コードを追加
index.php
<?php
$path = explode("/",$_SERVER["PATH_INFO"]);
switch($path[1]) {
case "contents": include "show/main.html"; break;
}
?>
https://example.com/contents
にアクセスすると
こちらはコンテンツです。
と表示されます。
$path[1]
がcontentsなら、つまりURLのディレクトリの1番目がcontentsならshow/main.html
をincludeします。
なのでhttps://example.com/contents/hello
でもshow/main.html
がincludeされブラウザにこちらはコンテンツです。
と表示されます。
https://example.com/contents/helloの場合表示させない
index.php
<?php
$path = explode("/",$_SERVER["PATH_INFO"]);
switch($path[2]) {
default: exit();
}
switch($path[1]) {
case "contents": include "show/main.html"; break;
}
?>
上記の場合はURLのディレクトリが2階層以上の場合exit()により処理が止まります。
if($path[1] === "contents") {}
などでいろいろ条件分岐出来ると思います。
##おまけ
ルートのindex.phpで動かしてるのでshow/main.htmlに書いたPHPのコードも動きます。
#フレームワークを使わずに以下のルーティングを使って自作したサイトたち
自作SNS
https://test.nieru.net/
ユーザーページサンプル
https://test.nieru.net/admin
https://test.nieru.net/nieru
(利用者募集しております。)
無料レンタル掲示板サイト
https://nieru.net/
掲示板活用サンプル