PHP pseudo-static은 전달된 매개변수 이름을 숨기는 데 주로 사용됩니다. pseudo-static 구현 솔루션에 대해 말하면 "간단합니다. apache의 다시 쓰기 규칙을 구성하면 됩니다"
라고 대답해 주실 수 있나요? 이런 상황을 눈치채셨나요? 최근에 새로운 기능이 많이 개발되었습니다. 매일 여러 가지 새로운 기능이 추가되었고, 처음 이틀 동안에는 운영 및 유지 관리 학생들이 기꺼이 협력했습니다. 이틀 동안 운영 및 유지 관리 학생들은 기꺼이 협조했습니다. 한 번에 다 해보고 너무 무감각하고 멍청해서 매일 나를 괴롭히는 게 어때? 그런데 막 온라인에 접속하려고 하는데 운영 및 유지보수 동급생에게 열심히 물어야 하고 프로그래머 세계에서 가장 뻔뻔한 말을 해야 합니다. "이것이 마지막 변경입니다." 그리고 나중에 변경해야 합니다. 야, 네 성격은 깔끔한 청소야. . .
이런 고민이 있으신 분들은 다음 글을 꼭 읽어보시고 앞으로 다시는 운영 및 유지보수 문의하지 마시고 원하시는 일 모두 하시길 바라겠습니다. . .
PHP에서 의사정적을 구현하는 방법은 몇 가지가 있나요? 개인적인 의견과 통계는 4가지가 있습니다
1. Apache의 URL 재작성 규칙을 사용하세요. Apache에서 구성합니다. 여기서는 학생들이 모두 간단한 구성만 나열합니다.
RewriteRule ^/test.html index.php?controller=index&action=test [L]
2. PHP의 pathinfo를 사용하여 'www.xxx.com/index.php' /c/index/a를 수행하는 웹사이트를 본 적이 있습니까? /test/id/100', 물론 이를 지원하려면 'php.ini'의
'cgi.fix_pathinfo' 매개변수를 1로 설정해야 합니다. 'www.xxx.com/index.php/c/index/a/test/id/100'을 예로 들어보세요
echo $_SERVER['PATH_INFO'] //출력 '/c/index/a/ test /id/100'
이제 이해하셔야 합니다. 이 단락을 구문 분석하여 실제 주소를 할당할 수 있습니다
3. 일반적으로 의사 정적 페이지는 실제로 존재하지 않는 페이지이므로 다음을 수행할 수 있습니다. Apache 404 구성을 사용하지만 몇 가지 문제가 있습니다. 즉, 'post' 유형 요청이 포기되어 '$_POST'를 얻을 수 없게 됩니다.
하지만 '$_GET'은 여전히 얻을 수 있습니다. 여기서 404 페이지는 '404page.php'이며, Apache 구성은 다음과 같습니다.
ErrorDocument 404 /404page.php
header("HTTP/1.1 200 OK"); //这里一定要有,不然状态就是404 $reqUrl = $_SERVER['REQUEST_URI']; // 请求地址 /** * 从URL中解析参数 */ function parseUrlParams($queryUrl) { $arr = explode('?', $queryUrl); parse_str($arr[1], $param); if($param) { foreach($param as $key => $value) { $_GET[$key] = $value; } } } parseUrlParams($reqUrl); // url解析参数 //然后你就可以使用 $reqUrl 根据自己的规则匹配不同的实际请求地址 if(preg_match('#^/test.html#is', $reqUrl, $matches)) { include('index.php'); die(); }4에 다음 코드를 삽입하세요. , 방법 3은 Apache 내부 메커니즘의 리디렉션과 동일하므로 post(get)에 의해 전달된 매개변수를 얻을 수 없게 됩니다. 위의 분석을 보면 실제로 관련 파일을 찾을 수 없다는 것을 알 수 있습니다. 서버가 관련 파일을 찾을 수 없으면 이에 대한 파일을 지정합니다. 이때는 POST 등을 수행할 필요가 없습니다. 손실되지 않습니다. Apache 구성은 다음과 같습니다.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .index.php
위 구성의 일반적인 의미는 파일이나 디렉터리를 찾을 수 없습니다. 대신 루트 디렉터리에서 'index.php'를 사용하면 'index.php'에서 관련 매개변수를 가져와 실제 요청 주소로 구문 분석할 수 있습니다
/** * 获取当前请求的URI地址 *@param void *@author painsOnline *@return string URI */ function getReqUri() { return trim($_SERVER["REQUEST_URI"]); } $reqUri = getReqUri(); if(preg_match('/^\/test.html/isU', $reqUri)) {//解析请求地址 include 'test.php'; exit(); }
<?php //利用server变量 取得PATH_INFO信息 该例中为 /1,100,8630.html 也就是执行脚本名后面的部分 if(@$path_info =$_SERVER["PATH_INFO"]){ //正则匹配一下参数 if(preg_match("/\/(\d+),(\d+),(\d+)\.html/si",$path_info,$arr_path)){ $gid =intval($arr_path[1]); //取得值 1 $sid =intval($arr_path[2]); //取得值100 $softid =intval($arr_path[3]); //取得值8630 }else die("Path:Error!"); //相当于soft.php?gid=1&sid=100&softid=8630 }else die('Path:Nothing!'); //就是这么简单了。~) ?>
위 내용은 PHP에서 의사정적을 구현하는 여러 가지 방법 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!