前回どんなURLでもindex.phpにリダイレクトするようになりました。
まずやることはURLの解析。
<?php // URIを取得する $uri = $_SERVER["REQUEST_URI"]; ?>
以下のURLでアクセスされた場合
$uriには1の場合「/content1」、2の場合「/subcontent2」が格納されますこの$uriに格納された値を/で区切った1番目の名称を表示するページのPHPファイルの名称とし、
viewというディレクトリに保存されていることにします。
つまりは1の場合./view/content1.php、2の場合./view/content2.phpを表示するということです。
<?php // URIを取得する $uri = $_SERVER["REQUEST_URI"]; // URLを/毎に分割 $paths = split("/", $uri ); ?>
splitで指定した文字列で分割します
1の場合は以下のようになります
split[0] = ""
split[1] = "content1"
後は表示したい場所で該当するphpファイルを読み込むだけ
<?php // URIを取得する $uri = $_SERVER["REQUEST_URI"]; // URLを/毎に分割 $paths = split("/", $uri ); ?> <!DOCTYPE html> <html lang="ja"> <head> <title>テスト</title> </head> <body id="body"> この下によみこまれたphpファイルの内容が表示される<br> <?php require_once("./view/".$paths[1].".php");?> </body> </html>
content1.php
<div>コンテンツ1</div>
content2.php
<div>コンテンツ2</div>
これで1の場合はコンテンツ1が、2の場合はコンテンツ2が表示されるようになります。
実際はもう少し複雑なレイアウトでURLのルールも複雑なのですが、考えた方はこれを基本にしてます。