-
- // URLを静的URLに変換する
- function url_rewrite($file,$params = array (),$html = "",$rewrite = true)
- {
- if ($rewrite ) { //開発段階では書き換えを行わないでください。
- $url = ($file == 'index') '' : '/'
- if (!emptyempty; params) && is_array($params)) $url .= '/' . implode('/', $params);
- if (!emptyempty ($html)) $url .= '.' } else {
- $url = ($file == 'index') ? '/' : '/' . $file; if (substr($url, -4) != '.php' && $file != 'インデックス') $url .= '.php';
- if (!emptyempty ($params) && is_array($params)) $url .= '?' }
-
- return $url ;
- }
-
- echo url_rewrite('test.php',array('class'=>"User",'act'=>'check','name'=>'tank'));
- / いつ/$rewrite = false、表示は次のようになります /test.php?class=User&act=check&name=tank
-
- echo url_rewrite('test.php', array('class'=>"User",'act'= >'check','name'=>'tank'));
- //$rewrite = true の場合、表示は次のようになります/test.php/User/check/tank
-
- echo url_rewrite('test' , array ('class'=>"User",'act'=>'check','name'=>'tank'));
- // $rewrite = true の場合、表示は次のようになります / test/ ユーザー/チェック/タンク
-
- echo url_rewrite('test', array ('class'=>"User",'act'=>'check','name'=>'tank'),' html' );
- // $rewrite = true の場合、次のように表示されます /test/User/check/tank.html
- ?>
- 'check','name'=>'tank'));?>">test
-
-
-
- コードをコピーします
上記は、動的 URL を静的 URL に変換するメソッドを記述するだけで、次のようにページにリンクが生成されます。
ここを直接クリックすると、ルートがタンク ディレクトリを見つけることができないため、404 エラーが報告されます。ここが難しいので、見つからないディレクトリやファイルには php ファイルを指定する必要があります。これには、Apache、nginx、htaccess などを使用する必要があります。
三、統一された入口を指定する
RewriteCond %{REQUEST_FILENAME} !-f //ファイルが見つかりません RewriteCond %{REQUEST_FILENAME} !-d //ディレクトリが見つかりません- RewriteRule . /test3/index.php [L]
-
-
- コードをコピーします
.htaccess で実装しても、Apache などの設定ファイルに記述しても、すべて可能です。上記の 3 つの文は、ディレクトリが見つからない場合は、index.php ファイルに移動します。ファイルが見つからない場合は、index.php に移動します。
これを実行した後、http://localhost/test3/test.php/User/check/tank にアクセスすると、index.php に転送されます。php ファイルがわかったので、扱いは簡単になります。
以下の内容は全て http://localhost/test3/test.php/User/check/tank を書き換えて動作させており、他の方法も同様です。
4、index.phpファイル
-
- $filename = $_SERVER['REQUEST_URI']; //リクエストされたURL
-
- /**リクエストされた URL、「/test3/test.php/User/check/tank」
- * test.php は移動先の php ファイルです
- * User はクラス名です
- * check はクラス内のメソッド名です
- * Tank はパラメータをチェックするために渡されます*/
-
- preg_match("/(w+.php)/" , $filename,$match); //php ファイル名を検索します
-
- $array =explode('/',$filename); //静的 URL を分割します
- $key = array_keys($array,$match[0 ] ); //ファイルに対応する添字配列を取得します ( [0] => 2 )
- $file_array = array_slice($array,0,$key[0]+1); //Array ( [0] = >) ; [1] => test3 [2] => test.php )
- $param_array = array_slice($array,$key[0]+1); => チェック [2] => タンク )
-
- $file_path = implode('/',$file_array); = "index.php"); include_once($array[$key[0]]); //リクエスト URL に php ファイルを含めます。ここでは test.php です
- }
-
- if(class_exists($param_array[0])){ //判定チェックファイル内にクラス User がある場合 test.php
-
- $obj = new $param_array[0];
- if(method_exists($obj,$param_array[1])){ //クラス User があるかどうかを確認しますチェックメソッドはありません
- $obj->$param_array[1]($param_array[2]); //このメソッドを呼び出すと、結果は (私の名前は Tank) になります
- }
- }
- ?>
-
-
- Copyコード
-
5、test.php ファイル
class User { public function check($name){ - echo "My name is".$name
- }
- }
- ?>
-
-
-
- コードをコピー
-
それでは、http://localhost/test3/test.php/User/check/tank にアクセスしてみましょう。
結果は次のようになります。私の名前はタンクで、アドレス バーは静的なままです。
|