1

ページのタイトルをURLに渡し、ページが読み込まれたときにmysqlテーブルからphpでそれらを取得するために、.htaccessコードを使用しています。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

私はこのphpコードを使用して、URLを分解し、タイトルを取得しています。

$passed_url = $_SERVER['REQUEST_URI'];
$passed_url = explode("/", $passed_url);
$passed_url = end($passed_url);

今、私は次のようなユーザープロファイルページを作成したいのでwww.website.com/users/User_name_in_here 、これがユーザーページであるか、それともライターであることができる単なる通常のページであるかをphpで確認するにはどうすればwww.webiste.com/Page_title_in_here よいですか?これを行うためのより良い方法はありますか?(私はちょうどphpのスターター)

4

2 に答える 2

1

1 つの方法は、チェックすること$passed_url[1]です。「ユーザー」の場合は、ユーザー ページにいることがわかります。

より良い方法は、index.php をフロント コントローラーとして使用し、リクエスト uri に基づいてコントローラーにリクエストを渡すことです。これを行うにはいくつかの方法があります。

一部のフレームワークは、uri を class::method にマップします。したがって、URL が変更され/users/view/usernameusers::viewが呼び出されます。

私は正規表現を書くことを好み、どの正規表現が一致すると、どのコントローラーがロードされるかを制御します。

于 2012-06-18T04:39:22.433 に答える
0

実際には、次の方法で Rewrite Engine.htaccessファイルを変更できます。

RewriteEngine On
RewriteRule (.*)-(.*)\.ptf$ ./?page=$1&id=$2&%{QUERY_STRING} 
RewriteRule ^([^/]*)\.ptf$ ./?page=$1&%{QUERY_STRING} [L]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ ./?page=$1&id=$2&%{QUERY_STRING}

したがって、このルールが正確に行うことは次のとおりです。

の場合URLwww.website.com/Page_title_in_here

それは行くwww.website.com/?page=Page_title_in_here

そして、このように言うとwww.website.com/users-User_name_in_here

にリダイレクトしますwww.website.com/?page=users&id=User_name_in_here

$_GET["page"]したがって、および$_GET["page"]変数で操作できます。

何を言います?私はこのようにします。これがお役に立てば幸いです!

于 2012-06-18T04:46:52.030 に答える