-
- //url을 정적 URL로 변환
- function url_rewrite($file,$params = array (),$html = " " ,$rewrite = true)
- {
- if ($rewrite) { //개발 단계에서는 다시 작성하지 마세요. $rewrite = false로 설정하세요.
- $url = ($file == ' index ') ? '/' . $file
- if (!emptyempty ($params) && is_array($params)) $url .= '/' . 🎜> if (!emptyempty ($html)) $url .= '.' . $html;
- } else {
- $url = ($file == 'index') ? ' . $file;
- if (substr($url, -4) != '.php' && $file != 'index') $url .= '.php'
- if (!emptyempty ( $params) && is_array($params)) $url .= '?' . http_build_query($params)
- }
-
- return $url; ('test.php',array('class'=>"User",'act'=>'check','name'=>'tank'))
- //$rewrite = In 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 '=>'tank'),'html');
- //$rewrite = true일 때 다음이 표시됩니다./test/User/check/tank.html
- ? >
- < a href="./test3"User",'act'=>'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로 구현하든, 아파치 등의 구성 파일에 작성하든 모두 가능합니다. 위의 세 문장은 무엇을 의미합니까? 디렉토리를 찾을 수 없으면 index.php 파일로 이동하십시오. 파일을 찾을 수 없으면 index.php로 이동하십시오.
이렇게 한 후 http://localhost/test3/test.php/User/check/tank를 방문하면 index.php로 전송됩니다. 이제 php 파일을 알았으니 처리하기가 쉬울 것입니다.
아래 내용은 모두 http://localhost/test3/test.php/User/check/tank를 다시 작성하여 운영되며, 다른 방법도 유사합니다.
넷째, index.php 파일
-
- $filename = $_SERVER['REQUEST_URI'] //요청된 URL
-
- /** 요청 url "/test3/test.php/User/check/tank"
- * test.php는
- 으로 갈 php 파일 * User는 클래스 이름
- * check는 메소드 이름 클래스
- * 탱크는 검사에 전달되는 매개변수입니다.*/
-
- preg_match("/(w .php)/",$filename,$match); //php 파일 이름 찾기
-
- $array =explore('/' , $filename); //정적 URL 분할
-
- $key = array_keys($array,$match[0]) //파일에 해당하는 첨자 배열 가져오기([0] => 2)
- $file_array = array_slice($array,0,$key[0] 1) //배열 ( [0] => [1] => test3 [2] => test.php )
- $param_array = array_slice($array,$key[0] 1); //배열 ( [0] => 사용자 [1] => 확인 [2] => 탱크 )
-
- $ file_path = implode('/',$file_array);
-
- if($array[$key[0]] != "index.php"){
- include_once($array[$key [0 ]]); //패키지 요청 URL의 PHP 파일은 test.php입니다.
- }
-
- if(class_exists($param_array[0])){ //테스트가 있는지 판단하세요. .php 파일에 User 클래스가 있나요?
-
- $obj = new $param_array[0]
- if(method_exists($obj,$param_array[1])){ //User 클래스가 있는지 판단하세요. 클래스에 check 메소드가 있나요?
- $obj->$param_array[1]($param_array[2]) //이 메소드를 호출하면 결과는 다음과 같습니다.
- }
- }
- ?>
코드 복사
다섯, test.php 파일
-
- class User {
- public function check($name){
- echo "My name is" .$ name;
- }
- }
- ?>
-
http를 방문할 때 여기에
코드를 복사하세요:/ / 로컬 호스트/test3/test.php/User/check/tank.
결과는 다음과 같습니다. 내 이름은 탱크이고 주소 표시줄은 그대로 유지됩니다.
|