2种简单的Apache+PHP下实现URL重写的方法
来源:互联网 发布:高考地理选择题 知乎 编辑:程序博客网 时间:2024/06/06 09:16
介绍2种简单的Apache+PHP下实现URL重写的方法,第一种适合有服务器配置权限的用户,第二种适合租用空间的用户,也作为我近期的学习心得的整理。
1、对于有服务器配置权限的用户,推荐使用Apache的mod_rewrite模块,这里假设已经安装好mod_rewrite模块。打开Apache的配置文件,找到相应主机的部分,添加以下代码:
RewriteEngine On RewriteRule ^/abc/([a-z]+)/([0-9]+).html$ /abc.php?action=$1&id=$2
然后在shell里执行service httpd reload,让Apache重新载入配置就好了。
现在在PHP页面里面我们可以把链接写成 abc/a/1.html的形式,Apache在解析这个 URL的时候会rewrite成abc.php?action=a&id=1的形式,并返回正确的页面。运用正则表达式我们可以实现几乎任何我们想要的链接形式,mod_rewrite模块的功能异常强大,这里只是一个及其简单的应用。
2、对于租用空间的用户,一般都没有办法修改Apache的配置,这里有个变通的方法,原理是这样的:当要传递参数访问PHP 页面时,正常情况下是通过自动全局变量$_GET来获得,比如上面的链接,在页面里可以通过$_GET['action'] 和 $_GET['id'] 来获得,重写URL后就不行了。现在在每个页面里require一个url_rewrite.php文件,里面代码如下:
$filename = basename($_SERVER['SCRIPT_NAME']);
if (strtolower($filename) == “abc.php”){
if (!empty($_GET[id])){
$id = intval($_GET[id]);
$action = intval($_GET[action]); }
else { $nav = $_SERVER["REQUEST_URI"];
$script = $_SERVER["SCRIPT_NAME"];
$nav = ereg_replace(”^$script”, “”, urldecode($nav));
$vars = explode(”/”, $nav);
$action = intval($vars[1]);
$id = intval($vars[2]); } }
这样$action和$id也得到了,页面里链接可以写成abc.php/a/1的形式来访问相应页面。需要注意的是这种方法效率较第一种低,第一种方法是在WEB服务器URL解析过程中实现的,而这里是在PHP页面解析过程里实现的,第2种方法只是变通,不得已而为之,要修改链接形式很不方便也不灵活。
注意: .htaccess文件放在站点根目录下,权限级别最高.然后把伪静态规则放在.htaccess中,传到网站根目录.问题解决.
- 2种简单的Apache+PHP下实现URL重写的方法
- 2种简单的Apache+PHP下实现URL重写的方法 【转】
- Apache下的URL重写
- linux下apache开启url重写的方法(详细说明)
- Url重写的简单方法
- Apache Mod_Rewrite实现URL重写的配置方法
- Apache Mod_Rewrite实现URL重写的配置方法
- Apache Mod_Rewrite实现URL重写的配置方法
- Apache Mod_Rewrite实现URL重写的配置方法
- discuz论坛Apache Rewrite实现URL重写的配置方法
- apache的url重写
- Apache的URL重写
- IIS7下伪静态(URL重写)的实现方法
- 修改apache的重写机制,实现url的重写模式
- 使用php 的缓冲区功能和apache的url重写功能实现静态html生成实例
- 使用php 的缓冲区功能和apache的url重写功能实现静态html生成实例
- Apache下简化URL,去掉index.php的方法
- 使用PathInfo实现简单的URL重写
- Mac下more命令的奇怪选项
- 使用WPF创建画图箭头
- FIFO 有名管道
- 新公司半年工作体会
- 常用窗体打开与关闭
- 2种简单的Apache+PHP下实现URL重写的方法
- 欢迎大家常来
- error:ids for this class must be manually assigned before calling save():
- 关于SESSION变量的总结~
- 客户端图片缓存
- 中国如何打造全球化的互联网公司?
- C#控制鼠标动作
- 调试菜谱之二——CPU100%
- 如何开会?