Home > Article > Backend Development > Three methods to implement pseudo-static pages in PHP
PHP pseudo-static writing method - one
Pseudo-static is also known as: URL rewriting
It is mainly for SEO. (What is SEO? Don’t ask me about this. Haha~ Those who work on the Internet don’t understand SEO~~~~)
Method 1:
For example, this webpage
http://www.2cto.com /soft. php/1,100,8630.html
In fact, the script processed is soft.php and the parameter is 1,100,8630
Which is equivalent to soft.php?a=1&b=1=100&c=8630, but such a URL is too difficult to remember. Search engines don’t like it either.
True static just completely generates HTML.
Output directly when the client accesses. No need for script explanation. It will have very good results when the traffic is very large (such as when there are millions of visits every day). In other words, this HTML page actually exists on the server side.
Of course, when the traffic of your website is not that large. URL rewriting is the best method (in my personal opinion, you can consider load balancing when there is large traffic. It doesn't matter either)
There are many methods of URL rewriting, including APACHE and IISREWRITE. Even PHP scripts can handle it directly. For example, in the above example, it is processed directly by the PHP script (the advantage of this method is that it directly reduces the pressure on the WEB server when there is a large amount of traffic. PS: This is also a personal opinion:
=============== =================================
Let’s take the program as an example to talk about the PHP pseudo-static program implementation method. In fact, I have posted this method in other forum communities before
Program example:
http://www.2cto.com /soft.php/1,100,8630.html
CODE:
//Use server The variable obtains the PATH_INFO information. In this example, it is /1,100,8630.html, which is the part after the execution script name
if(@$path_info =$_SERVER["PATH_INFO"]){
//Regular match the parameters
if (preg_match("//(d+),(d+),(d+).html/si",$path_info,$arr_path)){
$gid =intval($arr_path[1]); //Get value 1
$sid =intval($arr_path[2]); //Get the value 100
$softid =intval($arr_path[3]); //Get the value 8630
}else die("Path:Error!" ;
2. Remove the # in front of #LoadModule rewrite_module modules/mod_rewrite 3. Add in httpd.conf:
_URL} (?:index| dispbbs)[-0-9]+.html
RewriteRule ^(.*?(?:index|dispbbs))-([-0-9]+).html 1.php?__is_apache_rewrite=1&__rewrite_arg=2
5da302f4fcbd7e79702bc304835d7871
Fourth, to implement the mapping of asp post URL to php post, add between 85ac288f8cdf15251785b7af9467eee6 and 2071f931c9870be1bebed0bdda8305e7 in the third step:
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. Save httpd.conf and restart Apache
Method three:
<?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; ?>