PHP扩展功能 ---- 伪静态
一、入门三部曲
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扩展功能 ---- 伪静态的更多相关文章
- PHP如何实现网址伪静态
Apache的 mod_rewrite是比较强大的,在进行网站建设时,可以通过这个模块来实现伪静态. 主要步骤如下: 1.检测Apache是否开启mod_rewrite功能 可以通过php提供 ...
- wamp集成环境开启rewrite伪静态支持
wamp集成环境在安装完后,默认是没有开启伪静态的,所以有时把项目部署进去时如果源码里包含.htaccess文件的话,可能会出现500错误,这一般是因为不支持伪静态造成的,解决这个问题的办法就是开启伪 ...
- ASP.NET伪静态实现
ASP.NET伪静态实现 在asp.net下,如何自己写代码来实现伪静态呢?如何重写url地址呢? 例如:本来aspx的页面地址是:/default.aspx?id=1,我要重写成这样:/index- ...
- phpstudy配置伪静态的方法
mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面.下面我详细说说它的使用方法1.检测Apache是否支持mod_rewrite通过php提供的phpinfo()函数查看环 ...
- Url重写——伪静态实现
简述: 在我们浏览网站的时候,很多都是以.html结尾的.难道这些都是静态网页么?其实不是的,它们很多是伪静态 那么什么是伪静态?顾名思义,就是假的静态页面.通过某种设置让你看成是静态的. Q:为何要 ...
- Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案
原文地址:Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案 启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:&quo ...
- IIS7.5使用web.config设置伪静态的二种方法
转自 网上赚钱自学网 .http://www.whosmall.com/post/121 近几天公司里开发的项目有几个运行在IIS7.5上,由于全站采用的是伪静态,因此从网上找到两两种方法来实现.这两 ...
- IIS7.5+WebConfig实现页面伪静态和301重定向
IIS7.5+WebConfig实现页面伪静态和301重定向 使用URLRewriter组件在windows 2003 +iis 6.0下配置伪静态的文章网络上一大堆.但在iis7.0或iis 7.5 ...
- 伪静态下Post无法响应的问题
页面进行伪静态,Post的地址就不要写相对路径了,这样容易出错. 原来路径为,/SC/ProductDetail.aspx?id=110 用相对路径, 那么post的地址为:/SC/ProductDe ...
随机推荐
- SpringBoot之整合Redis
一.SpringBoot整合单机版Redis 1.在pom.xml文件中加入redis的依赖 <dependency> <groupId>org.springframework ...
- 纯css 画气泡
我们知道运用css可以绘画出各式各样的形状:三角形,圆形,正方形,椭圆形,平行四边形等等,而通过他们之间进行两两组合可以变换出各种意想不到的效果图,气泡框就是其中一个.最简单的气泡框就是一个矩形框+一 ...
- N个必备的实用jQuery代码段
jQuery(function() { /* <input type="password" name="pass" id="pass" ...
- Servlet - Reasource loading
1. Load db3.properties String path = this.getServletContext().getRealPath("/WEB-INF/classes/db/ ...
- Android BitmapFactory.Options
public Bitmap inBitmap 如果设置,解码选项“对象的方法,采取将尝试重用这个位图加载内容时. public int inDensity 使用的位图的象素密度. public boo ...
- ruby-程序员最好的朋友
ruby一门开源的动态编程语言,注重简洁和效率.Ruby 的句法优雅,读起来自然,写起来舒适. 介绍 这是个不会超过20分钟的 Ruby 简介.阅读前请您先将 Ruby 安装好.(如果您还没有安装Ru ...
- 有关使用 iview 表单验证的问题
Vue的UI解决框架,element-UI, iview-UI 有关表单验证使用的是同一个插件,async-validator,有关这个插件的用法就不做赘述,但是在iview表单的使用中可能会用到验证 ...
- centos ntfs-3g 安装和使用
安装fuse 下载fuse(ntfs-3g依赖fuse):http://vdisk.weibo.com/s/ajww5fZsUq50L?from=page_100505_profile&wvr ...
- Java Web高性能开发 - 前端高性能
作者:IBM developerWorks链接:https://www.ibm.com/developerworks/cn/java/j-lo-javawebhiperf1/著作权归作者所有.商业转载 ...
- Software Testing Techniques LAB 01: test Junit and Eclemma
1. Installing 1. Install Junit and hamcrest First, I download the Junit-4.12.jar and hamcrest-core- ...