>  기사  >  백엔드 개발  >  PHP URL 의사 정적 프로세스에 대한 자세한 설명

PHP URL 의사 정적 프로세스에 대한 자세한 설명

WBOY
WBOY원래의
2016-07-25 08:59:411201검색
  1. //url을 정적 URL로 변환
  2. function url_rewrite($file,$params = array (),$html = " " ,$rewrite = true)
  3. {
  4. if ($rewrite) { //개발 단계에서는 다시 작성하지 마세요. $rewrite = false로 설정하세요.
  5. $url = ($file == ' index ') ? '/' . $file
  6. if (!emptyempty ($params) && is_array($params)) $url .= '/' . 🎜> if (!emptyempty ($html)) $url .= '.' . $html;
  7. } else {
  8. $url = ($file == 'index') ? ' . $file;
  9. if (substr($url, -4) != '.php' && $file != 'index') $url .= '.php'
  10. if (!emptyempty ( $params) && is_array($params)) $url .= '?' . http_build_query($params)
  11. }
  12. return $url; ('test.php',array('class'=>"User",'act'=>'check','name'=>'tank'))
  13. //$rewrite = In false인 경우 다음과 같이 표시됩니다./test.php?class=User&act=check&name=tank
  14. echo url_rewrite('test.php', array ('class'=>"User",' act'= >'check','name'=>'tank'));
  15. //$rewrite = true일 때 표시되는 내용은 다음과 같습니다/test.php/User/check/tank
  16. echo url_rewrite('test', array ('class'=>"User",'act'=>'check','name'=>'tank'))
  17. //$ rewrite = true '=>'tank'),'html');
  18. //$rewrite = true일 때 다음이 표시됩니다./test/User/check/tank.html
  19. ? >
  20. < a href="./test3"User",'act'=>'check','name '=>'tank' ));?>">test
  21. 코드 복사
  22. 위는 단순히 메소드를 작성한 것입니다. 동적 URL을 정적 URL로 변환하려면 다음과 같이 페이지에 링크가 생성됩니다.

테스트

코드 복사
  1. 여기를 직접 클릭하면 탱크 디렉토리를 찾을 수 없기 때문에 반드시 404 오류가 발생합니다. 여기서 어려움이 있으므로 찾을 수 없는 디렉터리와 파일에 대해 PHP 파일을 지정해야 합니다. 이를 위해서는 Apache, nginx 또는 htaccess 등을 사용해야 합니다.
셋, 통일된 출입구를 지정하라

RewriteCond %{REQUEST_FILENAME} !-f //파일을 찾을 수 없습니다

RewriteCond %{REQUEST_FILENAME} !-d //디렉토리를 찾을 수 없습니다
RewriteRule ./test3/index.php [L]
  1. 코드 복사
  2. .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 파일

    1. $filename = $_SERVER['REQUEST_URI'] //요청된 URL
    2. /** 요청 url "/test3/test.php/User/check/tank"
    3. * test.php는
    4. 으로 갈 php 파일 * User는 클래스 이름
    5. * check는 메소드 이름 클래스
    6. * 탱크는 검사에 전달되는 매개변수입니다.*/
    7. preg_match("/(w .php)/",$filename,$match); //php 파일 이름 찾기
    8. $array =explore('/' , $filename); //정적 URL 분할
    9. $key = array_keys($array,$match[0]) //파일에 해당하는 첨자 배열 가져오기([0] => 2)
    10. $file_array = array_slice($array,0,$key[0] 1) //배열 ( [0] => [1] => test3 [2] => test.php )
    11. $param_array = array_slice($array,$key[0] 1); //배열 ( [0] => 사용자 [1] => 확인 [2] => 탱크 )
    12. $ file_path = implode('/',$file_array);
    13. if($array[$key[0]] != "index.php"){
    14. include_once($array[$key [0 ]]); //패키지 요청 URL의 PHP 파일은 test.php입니다.
    15. }
    16. if(class_exists($param_array[0])){ //테스트가 있는지 판단하세요. .php 파일에 User 클래스가 있나요?
    17. $obj = new $param_array[0]
    18. if(method_exists($obj,$param_array[1])){ //User 클래스가 있는지 판단하세요. 클래스에 check 메소드가 있나요?
    19. $obj->$param_array[1]($param_array[2]) //이 메소드를 호출하면 결과는 다음과 같습니다.
    20. }
    21. }
    22. ?>
    코드 복사

    다섯, test.php 파일

    1. class User {
    2. public function check($name){
    3. echo "My name is" .$ name;
    4. }
    5. }
    6. ?>
    http를 방문할 때 여기에

    코드를 복사하세요:/ / 로컬 호스트/test3/test.php/User/check/tank. 결과는 다음과 같습니다. 내 이름은 탱크이고 주소 표시줄은 그대로 유지됩니다.



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.