一、入门三部曲

1、什么是伪静态?

改写URL,以静态的url形式访问页面,但其实是用PHP一类的动态脚本来处理的。

2、为什么要用伪静态?

需要动态获取数据,但是又希望能够对搜索引擎友好。

3、怎么用伪静态?

(1)隐藏入口文件

(2)将url参数形式中的?、&、=进行转换

如: http://localhost/index.php?m=home&c=user&a=login改写成http://localhost/home/user/login.html的形式

更多的参数即作为get传递的额外参数

二、伪静态在PHP中的应用

1、隐藏入口文件

(1)修改apache配置文件

  • 开启rewrite_module功能
LoadModule rewrite_module modules/mod_rewrite.so

(2)允许重启

<Directory "${INSTALL_DIR}/www/">
Options +Indexes +FollowSymLinks +Multiviews
AllowOverride all
Require local
</Directory>

(3)在index.php的同级目录下创建.htaccess文件

<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

2、参数优化

访问优化后的url时,需要将路由信息转换为模块、控制器、方法(操作)名。

参数个数大于3时,后面的参数作为params数组

// http://localhost/home/user/login.html 以此url为例
//$_SERVER['PATH_INFO'] => /home/user/login.html $suffix = strrchr($_SERVER['PATH_INFO'], '.'); // => .html $pathInfo = str_replace($suffix,'',$_SERVER['PATH_INFO']); // => /home/user/login $path = substr($pathInfo, 1); // => home/user/login $arr = explode('/'. $path); //['home','user','login']
  • strrchr(string $haystack , mixed $needle): 查找指定字符$needle在字符串$haystack中的最后一次出现
  • str_replace( mixed $search , mixed $replace , mixed $subject [, int &$count ] ): 返回将$subject中全部的$search都用$replace替换之后的字符串或数组。
  • substr( string $string , int $start [, int $length ]): 返回字符串 $string$start$length 参数指定的子字符串。
  • explode(string $delimiter , string $string [, int $limit ]): 此函数返回由字符串组成的数组,每个元素都是 $string 的一个子串,它们被字符串 $delimiter 作为边界点分割出来。

PHP扩展功能 ---- 伪静态的更多相关文章

  1. PHP如何实现网址伪静态

    Apache的 mod_rewrite是比较强大的,在进行网站建设时,可以通过这个模块来实现伪静态. 主要步骤如下: 1.检测Apache是否开启mod_rewrite功能     可以通过php提供 ...

  2. wamp集成环境开启rewrite伪静态支持

    wamp集成环境在安装完后,默认是没有开启伪静态的,所以有时把项目部署进去时如果源码里包含.htaccess文件的话,可能会出现500错误,这一般是因为不支持伪静态造成的,解决这个问题的办法就是开启伪 ...

  3. ASP.NET伪静态实现

    ASP.NET伪静态实现 在asp.net下,如何自己写代码来实现伪静态呢?如何重写url地址呢? 例如:本来aspx的页面地址是:/default.aspx?id=1,我要重写成这样:/index- ...

  4. phpstudy配置伪静态的方法

    mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面.下面我详细说说它的使用方法1.检测Apache是否支持mod_rewrite通过php提供的phpinfo()函数查看环 ...

  5. Url重写——伪静态实现

    简述: 在我们浏览网站的时候,很多都是以.html结尾的.难道这些都是静态网页么?其实不是的,它们很多是伪静态 那么什么是伪静态?顾名思义,就是假的静态页面.通过某种设置让你看成是静态的. Q:为何要 ...

  6. Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案

    原文地址:Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案 启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:&quo ...

  7. IIS7.5使用web.config设置伪静态的二种方法

    转自 网上赚钱自学网 .http://www.whosmall.com/post/121 近几天公司里开发的项目有几个运行在IIS7.5上,由于全站采用的是伪静态,因此从网上找到两两种方法来实现.这两 ...

  8. IIS7.5+WebConfig实现页面伪静态和301重定向

    IIS7.5+WebConfig实现页面伪静态和301重定向 使用URLRewriter组件在windows 2003 +iis 6.0下配置伪静态的文章网络上一大堆.但在iis7.0或iis 7.5 ...

  9. 伪静态下Post无法响应的问题

    页面进行伪静态,Post的地址就不要写相对路径了,这样容易出错. 原来路径为,/SC/ProductDetail.aspx?id=110 用相对路径, 那么post的地址为:/SC/ProductDe ...

随机推荐

  1. g2o error

    /home/lzp/slamtest/graduationcode/p3/poseestimation/pose_estimation_3d2d.cpp: In function ‘void bund ...

  2. VPS虚拟化架构OpenVZ、KVM、Xen、Hyper-V的区别

    1.OpenVZ OpenVZ(简称OVZ)采用SWsoft的Virutozzo虚拟化服务器软件产品的内核,是基于Linux平台的操作系统级服务器虚拟化架构.这个架构直接调用宿主机(俗称:母机)中的内 ...

  3. java设计模式-----9、观察者模式

    Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态. Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对 ...

  4. csharp: SQL Server 2005 Database Backup and Restore using C#

    1.第一种方式: using SQLDMO;//Microsoft SQLDMO Object Library 8.0 /// <summary> /// 数据库的备份 /// 涂聚文注: ...

  5. [COCI2006-2007#1] Bond

    状压DP \(dp[i]\)表示当前选人状态为\(i\)且选择了前\(i.count()\)个物品时最大的概率 #include"cstdio" #include"cst ...

  6. Ubuntu16.04 下安装tomcat

    有两种常用方法: 一.通过 apt-get 命令进行在线安装(会自动配置好环境变量和服务) 二.通过下载并解压 .tar.gz 包进行手动安装(需要手动配置环境变量) 一.通过 apt-get 命令进 ...

  7. html打造动画【系列4】哆啦A梦

    我相信每个人的童年都有一个哆啦a梦,一个小小的肚皮里装满了不可思议的哆啦a梦,一个在你无助伤心的时候陪在你身边的哆啦a梦,一个陪你胡思乱想陪你吃铜锣烧的哆啦a梦~今天我们就来画一个我们心中的哆啦a梦吧 ...

  8. 【js常用DOM方法】

    介绍几个js DOM的常用方法 获取元素节点 getElementById  getElementsByTagName  getElementsByClassName 先写一个简单的网页做测试: /* ...

  9. 【转载记录】Accessing Device Drivers from C#

    来源:http://www.drdobbs.com/cpp/accessing-device-drivers-from-c/184416423/   Device Drivers are writte ...

  10. CentOS6.5(1)----设置静态IP并禁用IPV6

    使用vim命令编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文件 vim /etc/sysconfig/network-scripts/ifcfg-eth0 ...