>  기사  >  백엔드 개발  >  PHP에서 의사 정적 페이지를 구현하는 세 가지 방법

PHP에서 의사 정적 페이지를 구현하는 세 가지 방법

巴扎黑
巴扎黑원래의
2016-11-24 14:08:291503검색

PHP 의사 정적 작성 방법 - 하나

의사 정적 작성은 URL 재작성

주로 SEO용입니다. (SEO가 뭐죠? 이런 건 묻지 마세요. ㅎㅎ~ 인터넷에서 일하시는 분들은 SEO를 모르세요~~)

방법 1:

예를 들면 이렇습니다. 웹페이지

http://www.2cto.com /soft.php/1,100,8630.html

실제로 처리된 스크립트는 Soft.php이고 매개변수는 1,100,8630입니다. 🎜>
Soft.php와 동일합니까? a=1&b=1=100&c=8630 그런데 그런 URL은 기억하기 너무 어렵습니다. 검색 엔진도 그것을 좋아하지 않습니다.

진정한 정적은 완전히 생성된 HTML입니다.

클라이언트가 접속하면 바로 출력합니다. 스크립트 설명이 필요하지 않습니다. 트래픽이 매우 클 때(예: 매일 수백만 건의 방문이 있는 경우) 매우 좋은 결과를 얻을 수 있습니다. 즉, 이 HTML 페이지는 실제로 서버 측에 존재합니다.

물론 웹사이트의 트래픽이 그다지 크지 않을 때입니다. URL 재작성은 가장 좋은 방법입니다. (개인 생각으로는 트래픽이 많을 때는 로드 밸런싱을 고려해 볼 수 있다고 생각합니다. 둘 다 상관없습니다.)

URL 재작성 방법에는 APACHE, IISREWRITE 등 여러 가지가 있습니다. 심지어 PHP 스크립트도 이를 직접 처리할 수 있습니다. 예를 들어 위의 예에서는 PHP 스크립트로 직접 처리합니다(이 방법의 장점은 트래픽이 많을 때 WEB 서버에 대한 부담을 직접 줄여준다는 것입니다. PS: 이 역시 개인적인 의견입니다. :

=========== =============================== =====

프로그램을 예로 들어보겠습니다. PHP 의사정적 프로그램 구현 방법은 사실 이전에 다른 포럼 커뮤니티에 이 방법을 게시한 적이 있습니다.

프로그램 예:

http://www.2cto.com /soft.php /1,100,8630.html

코드:

//서버 변수를 사용하여 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


//그렇게 간단해요~)

방법 2:

Apache의 구성 파일인 httpd.conf를 엽니다.

2. #LoadModule rewrite_module module/mod_rewrite

앞의 #을 제거합니다. 3. httpd.conf에 다음을 추가합니다:

85ac288f8cdf15251785b7af9467eee6 RewriteEngine On
#RewriteCond %{ENV:SCRIPT_URL} (?:index|dispbbs)[-0-9]+.html
RewriteRule ^(.*?(?:index|dispbbs))-([- 0- 9]+).html 1.php?__is_apache_rewrite=1&__rewrite_arg=2
2071f931c9870be1bebed0bdda8305e7

넷째, asp 게시물 URL을 php 게시물에 매핑하는 세 번째 단계는, aca4e345b4ad0c77052959c44666d9d4와 2071f931c9870be1bebed0bdda8305e7 사이에 추가:

RewriteMap tolowercase int:tolower
RewriteCond %{QUERY_STRING} (?:boardid|page|id|replyid|star|skin) =d+ [ NC]
RewriteRule ^(.*(?:index|dispbbs)).asp 1.php?{tolowercase:%{QUERY_STRING}}&__is_apache_rewrite=1

5. httpd.conf를 저장합니다. 그리고 Apache를 다시 시작하세요

방법 3:



   <?php 
    /* 
    功能:PHP伪静态化页面的实现 
    具体用法: 
    例如链接为:test.php/year/2006/action/_add.html 
    mod_rewrite(); 
    $yearn=$_GET["year"];//结果为&#39;2006&#39; 
    $action=$_GET["action"];//结果为&#39;_add&#39; 
    */ 
    function mod_rewrite(){ 
    global $_GET; 
    $nav=$_SERVER["REQUEST_URI"]; 
    $script_name=$_SERVER["SCRIPT_NAME"]; 
    $nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1); 
    $nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//这句是去掉尾部的.html或.htm 
    $vars = explode("/",$nav); 
    for($i=0;$i<Count($vars);$i+=2){ 
    $_GET["$vars[$i]"]=$vars[$i+1]; 
    } 
    return $_GET; 
    } 
    mod_rewrite(); 
    $yearn=$_GET["year"];//结果为&#39;2006&#39; 
    $action=$_GET["action"];//结果为&#39;_add&#39; 
    echo $yearn; 
    echo $action; 
    ?>


 <?php 
    /* 
    功能:PHP伪静态化页面的实现 
    具体用法: 
    例如链接为:test.php/year/2006/action/_add.html 
    mod_rewrite(); 
    $yearn=$_GET["year"];//结果为&#39;2006&#39; 
    $action=$_GET["action"];//结果为&#39;_add&#39; 
    */ 
    function mod_rewrite(){ 
    global $_GET; 
    $nav=$_SERVER["REQUEST_URI"]; 
    $script_name=$_SERVER["SCRIPT_NAME"]; 
    $nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1); 
    $nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//这句是去掉尾部的.html或.htm 
    $vars = explode("/",$nav); 
    for($i=0;$i<Count($vars);$i+=2){ 
    $_GET["$vars[$i]"]=$vars[$i+1]; 
    } 
    return $_GET; 
    } 
    mod_rewrite(); 
    $yearn=$_GET["year"];//结果为&#39;2006&#39; 
    $action=$_GET["action"];//结果为&#39;_add&#39; 
    echo $yearn; 
    echo $action; 
    ?>

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