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"];//结果为'2006' $action=$_GET["action"];//结果为'_add' */ 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"];//结果为'2006' $action=$_GET["action"];//结果为'_add' echo $yearn; echo $action; ?>
<?php /* 功能:PHP伪静态化页面的实现 具体用法: 例如链接为:test.php/year/2006/action/_add.html mod_rewrite(); $yearn=$_GET["year"];//结果为'2006' $action=$_GET["action"];//结果为'_add' */ 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"];//结果为'2006' $action=$_GET["action"];//结果为'_add' echo $yearn; echo $action; ?>