フレームワークを使用しない場合、ユーザーが動的に作成する可能性のある新しいページの新しい URL を PHP で生成する方法は? たとえば、ユーザーが新しいアカウントを作成したり、新しい記事を投稿したりすると、http://www.a.com/username/article/2011231.phpのように、ユーザーに特定の URL が割り当てられます。私の質問は、特定の番号 2011231 と URL 全体を生成する方法です。
2 に答える
あなたが探しているのはpretty-urlsです
URLリライトを使用する必要があります。
適切なURLで記事をデータベースに保存する必要があります。ユーザーが記事を作成するとしますHow to bake a cake
。この記事のかなりのURLをのarticle
ようにテーブルに保存しますhow-to-bake-a-cake
。タイトルをこれらのきれいなURLに変換するためのメカニズムが必要になります
あなたが持っているフロントエンドの発言article.php
のデフォルトの動作article.php
はexample.com/article.php?url=how-to-bake-a-cake
で、article.php
prividedprettyurlの記事を見つけて表示します。
今、あなたは.htaccess
実際に次のようなURLを持っているのに使用するでしょうexample.com/article/how-to-bake-a-cake
あなたの中で.htaccess
RewriteEngine On
RewriteCond %{REQUEST_URI} ^article/(.*)
RewriteRule article.php?url=$1
見たところ、その URL は yearmonthday.php という形式の日付で構成されています。それがコピーしたい場合は、 を使用できますdate('Ymd')
。一方、増分番号が必要で、記事をデータベースに保存すると仮定すると、INSERT
コマンドを実行mysql_insert_id()
してから関数を使用して ID を取得します。次に、/username/article/[number].php を、データベースでその記事を検索して表示する PHP ファイルに書き換える Apache の書き換えが必要になります。たとえば、次のようになります。
RewriteEngine On
RewriteRule ^/username/article/(\d*)\.php$ /articles.php?articleid=$1
たとえば、リクエストを受け取り、にhttp://domain.com/username/article/12345.php
送信し/articles.php?articleid=12345
ます。そこから$_GET["articleid"]
、ID が含まれます。ユーザー名を知るためにPHPスクリプトも必要な場合は、これを使用できます。
RewriteEngine On
RewriteRule ^/(.*)/article/(\d*)\.php$ /articles.php?username=$1&articleid=$2
次に$_GET["username"]
、ユーザー名と$_GET["articleid"]
記事 ID を持ちます。