私は.htaccesを初めて使用し、何年もの間、ドメインを取得しようとしてきました。
www.domain.com/post.php?post_id=20
このようなものに:
www.domain.com/post/this-is-the-title/
私が言ったように、私は.htaccessに不慣れですが、何でも助けてください!注:SQLデータベースからブログ投稿のタイトルを取得することになります
私は.htaccesを初めて使用し、何年もの間、ドメインを取得しようとしてきました。
www.domain.com/post.php?post_id=20
このようなものに:
www.domain.com/post/this-is-the-title/
私が言ったように、私は.htaccessに不慣れですが、何でも助けてください!注:SQLデータベースからブログ投稿のタイトルを取得することになります
ページタイトルがデータベース駆動型(または動的)である場合、.htaccessの書き換えをどのように回避できるかわかりません。PHPスクリプトでルーティングを使用する方が理にかなっています。
ここでは、非常に単純なルーティング方法について説明しました。それは主題に入る人々のためだけです、しかしあなたはそれに基づいてデータベース駆動型ルーターを構築することができるはずです。
基本的に、すべてのトラフィックをindex.php経由でルーティングし、リクエストURIを取得して、ロードするリソースを決定します。
[編集]
私のブログ投稿の情報を使用して、少し詳しく説明します。
サイトをセットアップして実行していると仮定して、最初にトラフィックをindex.phpに転送します。.htaccessでこれを行うと、次のように実行できます。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
次に、index.php(またはindex.phpから呼び出されるスクリプト)で、リクエストURIを取得できます。
$uri = $_SERVER["REQUEST_URI"];
OK、これまでのところとても良いです。ここで、データベースがページエイリアスとともにページコンテンツを保持していると仮定します。uriはおそらくページエイリアスになるので、あなたがする必要があるのは次のようなものだけです:
$pdo = new PDO(/* your db connection params */);
$page = $pdo
->query("SELECT * FROM pages WHERE alias = :alias",
array("alias" => $uri)
)
->fetch();
この時点で、URI文字列のタイトル(またはエイリアス)に対応するページコンテンツが必要です。あなたが今する必要があるのはあなたが望むようにそれを表示することです:
echo $page["content"];
できません。クエリ文字列にタイトルを付ける必要があります。.htaccessは、データベースから安全に何も取得できません。URLを書き直そうとしているので、URIに投稿タイトルを書いてみませんか?
.htaccessを使用してこれを行うことはできません。これは、「何らかの方法でSQLデータベースからブログ投稿のタイトル」を取得する必要があるためです。PHPを使用してリダイレクトを実行してください。:)