Home  >  Article  >  Backend Development  >  How to write php pseudo-static (apache pseudo-static rules)_PHP tutorial

How to write php pseudo-static (apache pseudo-static rules)_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:48:351072browse

In php, if we want to make pseudo-static, we can directly use php to process the URL. However, this kind of pseudo-static is not standard and can be said to look like parallel imports. It is just to find a place that makes you feel comfortable. Of course, if you want to achieve real pseudo-static We can use the apache Rewrite pseudo-static module for static examples. Let’s take a look.

The PHP program implements pseudo-static URL as follows.

 代码如下 复制代码

//伪静态方法一
// localhost/php100/test.php?id|1@action|2
$Php2Html_FileUrl = $_SERVER["REQUEST_URI"];
echo $Php2Html_FileUrl."
";// /php100/test.php?id|1@action|2
$Php2Html_UrlString = str_replace("?","",str_replace("/", "", strrchr(strrchr($Php2Html_FileUrl, "/"),"?")));
echo $Php2Html_UrlString."
";// id|1@action|2
$Php2Html_UrlQueryStrList = explode("@", $Php2Html_UrlString);
print_r($Php2Html_UrlQueryStrList);// Array ( [0] => id|1 [1] => action|2 )
echo "
";
foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr)
{
$Php2Html_TmpArray = explode("|", $Php2Html_UrlQueryStr);
print_r($Php2Html_TmpArray);// Array ( [0] => id [1] => 1 ) ; Array ( [0] => action [1] => 2 )
echo "
";
$_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1];
}
//echo '假静态:$_GET变量
';
print_r($_GET); // Array ( [id|1@action|2] => [id] => 1 [action] => 2 )
echo "
";
echo "


";
echo $_GET[id]."
";// 1
echo $_GET[action];// 2
?>
 
//伪静态方法二
// localhost/php100/test.php/1/2
$filename = basename($_SERVER['SCRIPT_NAME']);
echo $_SERVER['SCRIPT_NAME']."
";// /php100/test.php
echo $filename."
";// test.php
if(strtolower($filename)=='test.php'){
if(!empty($_GET[id])){
$id=intval($_GET[id]);
echo $id."
";
$action=intval($_GET[action]);
echo $action."
";
}else{
$nav=$_SERVER['REQUEST_URI'];
echo "1:".$nav."
";// /php100/test.php/1/2
$script=$_SERVER['SCRIPT_NAME'];
echo "2:".$script."
";// /php100/test.php
$nav=ereg_replace("^$script","",urldecode($nav));
echo $nav."
"; // /1/2
$vars=explode("/",$nav);
print_r($vars);// Array ( [0] => [1] => 1 [2] => 2 )
echo "
";
$id=intval($vars[1]);
$action=intval($vars[2]);
}
echo $id.'&'.$action;
}
?>
 
//伪静态方法三
function mod_rewrite(){
global $_GET;
$nav=$_SERVER["REQUEST_URI"];
echo $nav."
";
$script_name=$_SERVER["SCRIPT_NAME"];
echo $script_name."
";
$nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1);
echo $nav."
";
$nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//这句是去掉尾部的.html或.htm
echo $nav."
";
$vars = explode("/",$nav);
print_r($vars);
echo "
";
for($i=0;$i $_GET["$vars[$i]"]=$vars[$i+1];
}
return $_GET;
}
mod_rewrite();
$year=$_GET["year"];//结果为'2006'
echo $year."
";
$action=$_GET["action"];//结果为'_add'
echo $action;
?>
 
//伪静态方法四
//利用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!');
?>

If you have server permissions, I think you should use apache%CE%B1%BE%B2%CC%AC/" target="_blank">apache pseudo-static

1. Apache configuration:

Go to the /etc/httpd/conf/ directory and open the httpd.conf file.
Enable rewrite
# LoadModule rewrite_module modules/mod_rewrite.so remove the preceding #
Enable .htaccess
AllowOverride None is modified to: AllowOverride All

2. Rewrite writing method

The server has configuration files that cannot be changed by us, so in most cases we need to create an .htaccess file in the root directory of the website.

If the rule matches, it will be processed normally. The following modifiers are invalid 8) T=MIME-type(force MIME type) force MIME type

The code is as follows
 代码如下 复制代码
RewriteEngine on //启动rewrite引擎
RewriteRule ^/index([0-9]*).html$ /index.php?id= //“([0-9]*)” 代表范围 用(.*)代表所有,下同。
RewriteRule ^/index([0-9]*)/$ /index.php?id= [R] //虚拟目录
Copy code

RewriteEngine on //Start the rewrite engine RewriteRule ^/index([0-9]*).html$ /index.php?id=$1 //"([0-9]*)" represents the range. Use (.*) to represent all, the same below. RewriteRule ^/index([0-9]*)/$ /index.php?id=$1 [R] //Virtual directory





3. mod_rewrite rule modifier


1) R forces external redirection
2) F disables URL and returns 403 HTTP status code.
3) G forces the URL to be GONE and returns 410 HTTP status code.
4) P forces the use of proxy forwarding.
5) L indicates that the current rule is the last rule and stops analyzing the rewriting of future rules.
6) N runs the rewriting process starting from the first rule again.

7) C is associated with the next rule
9) NS is only used for non-internal subrequests 10) NC is not case sensitive

11) QSA append request string

12) NE no longer outputs escaped special characters %3d$1 is equivalent to =$1 http://www.bkjia.com/PHPjc/632782.htmlwww.bkjia.comtrue
http: //www.bkjia.com/PHPjc/632782.html
TechArticle
In php, if we want to make pseudo-static, we can directly use php to process the url, but this kind of pseudo-static is not standard. It can be said that it looks like parallel imports, but I just want to find a place where I feel comfortable. Of course, if you want...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn