> 백엔드 개발 > PHP 문제 > PHP에서 의사 정적 URL을 구현하는 방법

PHP에서 의사 정적 URL을 구현하는 방법

coldplay.xixi
풀어 주다: 2023-03-04 08:52:02
원래의
2859명이 탐색했습니다.

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

PHP에서 의사 정적 URL을 구현하는 방법

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
로그인 후 복사

相关学习推荐:编程视频

위 내용은 PHP에서 의사 정적 URL을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿