Home >Backend Development >PHP Problem >How to implement pseudo-static URL in PHP

How to implement pseudo-static URL in PHP

coldplay.xixi
coldplay.xixiOriginal
2020-08-11 09:23:022854browse

PHP实现网址伪静态的方法:1、使用函数【$_SERVER['PATH_INFO']】操作实现;2、配置【.htaccess】来,网站建设时使用【mod_rewrite】模块来实现伪静态。

How to implement pseudo-static URL in PHP

PHP实现网址伪静态的方法:

1.根据$_SERVER['PATH_INFO']来操作实现。

   举个列子比如你的网站的地址是 http://127.0.0.1/show_new.php/look-id-1.shtml

echo $_SERVER['PATH_INFO']

出来的结果就会是

 /look-id-1.shtml

看到这个我想大家可能已经明白了。完整的demo

相关学习推荐:php编程(视频)

index.php

代码如下:

index.php
 
$conn=mysql_connect("localhost","root","root")or dir("连接失败");
mysql_select_db("tb_demo",$conn);
$sql="select * from news";
$res=mysql_query($sql);
header("content-type:text/html;charset=utf-8");
echo "<h1>新闻列表</h1>";
echo "<a href=&#39;add_news.html&#39;>添加新闻</a><hr/>";
echo "<table>";
echo "<tr><td>id</td><td>标题</td><td>查看详情</td><td>修改新闻</td></tr>";
while($row=mysql_fetch_assoc($res)){
 echo "<tr><td>{$row[&#39;id&#39;]}</td><td>{$row[&#39;title&#39;]}</td><td><a href=&#39;show_new.php/look-id-{$row[&#39;id&#39;]}.shtml&#39;>查看详情</a></td><td><a href=&#39;#&#39;>修改页面</a></td></tr>";
}
//上面的红色的地址本来该是show_news.php?act=look&id={$row[&#39;id&#39;]}
echo "</table>";
//关闭资源
mysql_free_result($res);
mysql_close($conn);

show_new.php页面 

代码如下:

show_new.php
 
header("Content-type:text/html;charset=utf-8");
$conn=mysql_connect("localhost","root","root");
mysql_select_db("tb_demo",$conn);
mysql_query("set names utf8");
 $pa = $_SERVER[&#39;PATH_INFO&#39;];
//$pa  打印出来的值是  /look-id-1.html
//通过正则表达式匹配获取的url地址
if(preg_match(&#39;/^\/(look)-(id)-([\d])\.shtml$/&#39;,$pa,$arr)){
 $act = $arr[1]; //这个是请求的look方法
 $id = $arr[3];  //这个是获取的id 值
 $sql="select * from news  where id= $id";
 $res=mysql_query($sql);
 $res = mysql_fetch_assoc($res);
 echo $res[&#39;title&#39;]."<hr>".$res[&#39;content&#39;];
}else{
 echo "url地址不合法";
}
mysql_close($conn);

看到上面的这个我想大家肯定懂了吧   其实这种方式用的不多的下面的给大家说第二种方法了啊

2.根据配置.htaccess来实现。

Apache的mod_rewrite是比较强大的,在进行网站建设时,可以通过这个模块来实现伪静态。

主要步骤如下: 

1.检测Apache是否开启mod_rewrite功能     

可以通过php提供的phpinfo()函数查看环境配置,找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。如果没有开启“mod_rewrite”,则打开目录 apache目录下的“/apache/conf/” ,找到 httpd.conf 文件,再找到“LoadModule rewrite_module”,将前面的”#”号删除即表示取用该功能。    如果没有查找到“LoadModule” 区域,可以在最后一行加入

“LoadModule rewrite_module ,modules/mod_rewrite.so”

(独占一行),之后重启apache服务器。再通过phpinfo()函数查看环境配置就有“mod_rewrite”为项了.。

 2.让apache服务器支持.htaccess   

 如何让自己的本地APACHE服务器支持:“htaccess”呢? 只需修改apache的httpd.conf设置就可以让 APACHE支持“.htaccess”了。打开 APACHE目录的CONF目录下的httpd.conf文件,找到: Options FollowSymLinks AllowOverride None 改为 Options FollowSymLinks AllowOverride All 就行了。

 3.建立.htaccess文件    

建立.htaccess文件时要注意,不能直接建,方法是通过记事本中的另存为菜单,在文件名窗口输入:“.htaccess”,然后点击保存。

 4.rewrite规则学习    

在新建.htaccess文件之后,就在里面写入以下内容: RewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭 RewriteRule ([0-9]{1,})$index.php?id=$1 在这里,RewriteRule是重写规则,是用正则表达式的句子,([0-9]{1,})表示由数字组成的,$表示结束标志,表示以数字结束!如果要实现伪静态页面,

规则如下:

 RewriteEngine on RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2

在为个正则表达式中,([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第1括号匹配的值,$2代表第二个括号的值,如此类推! 测试PHP脚本如下: index.php文件中的代码如下:

echo ‘你的Action值为:’ . $_GET[&#39;action&#39;]; echo ‘ ’; 
echo ‘ID值为:’ . $_GET[&#39;id&#39;]; ?>

在浏览器地址栏输入:

 localhost/page-18.html

输出的是:

 你的Action值为:page ID值为:18

相关学习推荐:编程视频

The above is the detailed content of How to implement pseudo-static URL in PHP. For more information, please follow other related articles on the PHP Chinese website!

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