ホームページ > バックエンド開発 > PHPチュートリアル > 擬似静的php URLの実装方法を詳しく解説

擬似静的php URLの実装方法を詳しく解説

WBOY
リリース: 2016-07-25 08:56:05
オリジナル
1230 人が閲覧しました
  1. //URLを静的URLに変換

  2. function url_rewrite($file, $params = array (), $html = "", $rewrite = true) {
  3. if ($rewrite) { //開発段階では書き換えを行わないでください。 $url = ($file == 'index') '' : '/' if (! empty ( $params ) && is_array ( $params )) {
  4. $url .= '/' . implode ( '/', array_slice($params, 0 , 2));
  5. $param = array_slice($params , 2);
  6. foreach($param as $key => $value){
  7. $url .= '/' . urlencode ( $value ); $html )) {
  8. $url .= . $html; }
  9. } else {
  10. $url == '/' : '/' . if (substr ( $url, - 4 ) != '.php' && $file != 'index') {
  11. $url .= '.php'
  12. }
  13. if (! empty ( $params ) && is_array ( $params )) {
  14. $url .= '?' . http_build_query ( $params )
  15. }
  16. }
  17. return $url; 'test', array('class' => "ユーザー", 'act' => 'check', 'name' => 'tank','page'=>5 ) );echo "
    ";
  18. //$rewrite = In falseの場合は以下のように表示されます/test.php?class=User&act=check&name=tank

  19. echo url_rewrite ( 'test.php', array ('class' => " User", 'act' => 'check', 'name' => 'tank' ) );echo "
    ";

  20. //$rewrite = trueの場合、表示は次のようになります/ test.php/ ユーザー/チェック/タンク
  21. echo url_rewrite ( 'test', array ('class' => "ユーザー", 'act' => 'check', 'name' => 'tank' ) );echo "
    ";
  22. //$rewrite = true の場合、表示は次のようになります/test/User/check/tank

  23. echo url_rewrite ( 'test' , array ('class ' => "User", 'act' => 'check', 'name' => 'tank' ), 'html' );echo "
    "; //$rewrite = true の場合、表示は次のようになります /test/User/check/tank.html

  24. ?>

  25. コードをコピー
  26. "User",'act'=> 'チェック','名前 '=>'タンク'));?>">テスト
  27. 上記は動的 URL を静的 URL に変換し、次のようにページにリンクが生成されます。 テスト この時点で直接クリックすると、tank ディレクトリを見つけることができないため、必ず 404 エラーが報告されます。 見つからないディレクトリやファイルにはphpファイルを指定する必要があります。これには、Apache、nginx、htaccess などを使用する必要があります。
  28. 三、統一された入口を指定する
RewriteCond %{REQUEST_FILENAME} !-f //ファイルが見つかりません
RewriteCond %{REQUEST_FILENAME} !-d //ディレクトリが見つかりません

RewriteRule . /test3/index.php [L]

コードをコピーします

コードの説明: ディレクトリが見つからない場合は、index.php ファイルに移動します。ファイルが見つからない場合は、index.php ファイルにも移動します。 http://localhost/test3/test.php/User/check/tank にアクセスすると、index.php に移動します。 以下の内容は http://localhost/test3/test.php/User/check/tank を書き換えて動作させます。

4、index.phpファイル

  1. $filename = $_SERVER['REQUEST_URI']; //リクエストされたURL
  2. /**リクエストされた URL、「/test3/test.php/User/check/tank」
  3. * test.php は移動先の php ファイルです
  4. * User はクラス名です
  5. * check はクラス内のメソッド名です
  6. * Tank はbbs.it-home.org
  7. によって Checkparameters
  8. * に渡されます*/
  9. preg_match("/(w+.php)/" , $filename,$match); //php ファイル名を検索します
  10. $array =explode('/',$filename); //静的 URL を分割します
  11. $key = array_keys($array,$match[0 ]) ); //ファイルに対応する添字配列を取得します ( [0] => 2 )
  12. $file_array = array_slice($array,0,$key[0]+1); //配列 ( [0] = >) ; [1] => test3 [2] => test.php )
  13. $param_array = array_slice($array,$key[0]+1); => チェック [2] => タンク )
  14. $file_path = implode('/',$file_array);
  15. if($array[$key[0]]){
  16. include_once($array[$key[0]]); //リクエスト URL に php ファイルを含めます。ここでは test.php です
  17. }
  18. if(class_exists($param_array[0])){ //判定チェックファイル内にクラス User がある場合 test.php
  19. $obj = new $param_array[0];
  20. if(method_exists($obj,$param_array[1])){ //クラス User があるかどうかを確認しますはチェックメソッドではありません
  21. $obj->$param_array[1]($param_array[3]); //このメソッドを呼び出すと、結果は (私の名前は Tank) になります
  22. }
  23. }
  24. ?>
Copyコード
5、test.php ファイル

    class User {
  1. public function check($name){
  2. echo "My name is".$name
  3. }
  4. }
  5. ?>
コードをコピーします
;この時点では、http://localhost/test3/test.php/User/check/tank にアクセスしてもエラーは報告されません。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート