伪静态实际上是利用php把当前地址解析成另一种方法来访问网站,要学伪静态规则的写法,要懂一点正则

一、正则表达式教程

有一个经典的教程:正则表达式30分钟入门教程

常用正则如下:

. 换行符以外的所有字符

\w  匹配字母或数字或下划线或汉字

\s  匹配任意的空白符

\d  匹配数字

\b  匹配单词的开始或结束

^   匹配字符串的开始

$  匹配字符串的结束

*   重复零次或更多次

+  重复一次或更多次

? 重复零次或一次

{n}  重复n次

{n,}  重复n次或更多次

{n,m}  重复n到m次
htaccess文件常见到[NC][L][R][F]几个字符在代码末尾,下边列出它们在静态规则中的作用,以备参考。

NC :  no case,不区分大小写,忽略大小写;
L : last,表示已是最后一条规则,.htaccess文件解析将退出;
R : redirect,重定向;
F : forbidden,禁止访问

应用替换时,前面一个()中匹配的内容后面就用$1引用,第二个()中匹配的就用$2引用,,,,,,

这个()里面的东西叫原子组

分析一下discuz搜索引擎优化 htaccess里面的重写。

  RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2

  首先加入用户通过 linuxidc.com/forum-2-3.html 访问discuz论坛,那么先通过.htaccess过滤,看看是否需要.htaccess引导一下用户,如果满足列出的一系列RewriteCond的 条件那么就进行重写,

  discuz的没有列出RewriteCond 所以应该全部都进行重写。

  所以开始进行转写,

  forum-2-3.html 这个正好符合 列出的

  ^forum-([0-9]+)-([0-9]+)\.html$

  正则表达式。并且 $1 为 2 ,$2为3 ,

  所以代入后面,即 forumdisplay.php?fid=2&page=3 加上前面的RewriteBase 指定的文件目录,那么就带他到制定目录的forumdisplay.php?fid=2&page=3 。

  二、常见的.htaccess应用举例(部分例子引自四个例子实战讲解.htaccess文件rewrite规则)

  4.1 防止盗链,如果来得要访问jpe jpg bmp png结尾的url 用户不是来自我们的网站,那么让他看一张我们网站的展示图片。

  RewriteEngine OnRewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC]RewriteCond %{HTTP_REFERER} !^$RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

  4.2 网站升级的时候,只有特定IP才能访问,其他的用户将看到一个升级页面

  RewriteEngine onRewriteCond %{REQUEST_URI} !/upgrade.html$RewriteCond %{REMOTE_HOST} !^24\.121\.202\.30

  RewriteRule $ http://www.linuxidc.com/upgrade.html [R=302,L]

  4.3把老的域名转向新域名

  # redirect from old domain to new domainRewriteEngine OnRewriteRule ^(.*)$http://www.yourdomain.com/$1[R=301,L]

  三、常用示例

  RewriteEngine On

  RewriteRule index.html index.php

  比如:http://www.yzzmf.com/index.html -> http://www.yzzmf.com/index.php

  RewriteRule ^test([0-9]*).html$ test.php?id=$1

  比如:http://www.yzzmf.com/test8.html -> http://www.yzzmf.com/test.php?id=8

  RewriteRule ^cat-([0-9]+)-([0-9]+)\.html$ cat.php?id1=$1&id2=$2

  比如:http://www.yzzmf.com/cat-1-3.html -> http://www.yzzmf.com/cat.php?id1=1&id2=3

  RewriteRule ^cat-([a-zA-Z0-9\-]*)-([0-9]+)-([0-9]+)\.html$ cat.php?id0=$1&id1=$2&id2=$3

  比如:http://www.yzzmf.com/cat-zbc2ac-3-5.html -> http://www.yzzmf.com/cat.php?id0=zbc2ac&id1=3&id2=5

  RewriteRule ^cat1-([0-9]+)-([0-9]+)-([0-9]+)\.html$ cat1.php?id1=$1&id2=$2&id3=$3

  比如:http://www.yzzmf.com/cat1-4-3-8.html -> http://www.yzzmf.com/cat1.php?id1=4&id2=3&id3=8

  RewriteRule ^cat([0-9]*)/$ cat.php?id1=$1

  比如:http://www.yzzmf.com/cat5/ -> http://www.yzzmf.com/cat.php?id1=5

  RewriteRule ^catm([0-9]*)/([0-9]*)/$ catm.php?id1=$1&id2=$2

  比如:http://www.yzzmf.com/catm6/3/ -> http://www.yzzmf.com/catm.php?id1=6&id2=3

其中不提倡贪婪模式,把0-9都改成([\d]*?)     *?允许空

伪静态规则RewriteRule-htaccess的更多相关文章

  1. 常用系统的伪静态规则列表(rewrite)

    以前在云虚拟机上,是在iis上配置伪静态.这次买的一个香港的空间,商家说把伪静态规则直接放在web下即可. 注意,所有规则放在一起可能会有冲突,只放置你需要的规则即可. #shopex4.8 Rewr ...

  2. 转--htaccess语法教程 apache服务器伪静态规则教程

    转自:http://blog.csdn.net/qingli518/article/details/9118361 htaccess语法教程apache服务器伪静态规则教程 注:如果你是为了找Disc ...

  3. apache上.htaccess转向nginx上配置.htaccess伪静态规则

    nginx上配置.htaccess伪静态规则 在apache上.htaccess转向,只要apache编译的时候指明支持rewrite模块即可. 但是换到nginx上方法会有不同,有人说把.htacc ...

  4. WordPress程序伪静态规则(Nginx/Apache)及二级目录规则

    在众多CMS程序中,我们使用WORDPRESS还是比较多的,不仅仅是安全度较好,二来在于插件和主题很多,即便对于不会建站技术的用户也很简单的就可以搭建属于自己的网站项目.对于网站我们肯定是需要让有用户 ...

  5. PHPwind高级伪静态规则及方法

    phpwind iis下伪静态规则[ISAPI_Rewrite]RewriteRule ^(.*)/(.*)-htm-(.*)-(.*)\.html$ $1/$2\.php\?$3=$4Rewrite ...

  6. 伪静态规则写法RewriteRule-htaccess详细语法使用

    一.正则表达式教程伪静态规则写法RewriteRule-htaccess详细语法使用教程分享简单说下:伪静态实际上是利用PHP把当前地址解析成另外一种方法进行访问网站!要学伪静态规则的写法,你必须得懂 ...

  7. apache伪静态规则解析

    apache伪静态规则解析 最近有个客户有个要求,昨天折腾了一会,没解决,今天没啥就多学习学习 还是根据例子来学习比较快 1 简单的重定向规则 RewriteEngine On //启动规则 Rewr ...

  8. 【PHP项目】伪静态规则

    伪静态规则写法RewriteRule-htaccess详细语法使用 2016年03月30日 16:53:59 阅读数:20340 伪静态实际上是利用php把当前地址解析成另一种方法来访问网站,要学伪静 ...

  9. WordPress 伪静态规则(IIS/Apache/Nginx)

    不少朋友总是询问 WordPress 如何添加伪静态规则,今天倡萌就总结一下 Apache/Nginx 三种环境下的伪静态规则,希望对大家有所帮助. 检测主机是否支持伪静态的方法:在WP后台 > ...

随机推荐

  1. js中字符串和数组的使用

    函数: 函数在调用的时候,会形成一个私有作用域,内部的变量不会被外面访问,这种保护机制叫闭包.这就意味着函数调用完毕,这个函数形成的栈内存会被销毁. 但有时候我们不希望他被销毁. 函数归属谁跟它在哪调 ...

  2. 继承、接口、static、abstract

    继承: 1.用extends来完成继承 2.子类可以继承父类全部的数据域但是只有部分的数据域对子类可见 3.在java中支持单继承 4.单继承和多继承的比较 (1)多继承比单继承能够更好的提高代码的复 ...

  3. React之todo-list

    基于React的一个简单Todo-list 先赌为快:在线DEMO,感觉还不错点一下star  -_- ~ 源码地址: 一.已经完成的功能 1.新增选项(默认未完成) 2.完成状态可以切换 3.当前选 ...

  4. vue-cli创建的项目的目录结构及说明

    转自:http://blog.csdn.net/qq_34543438/article/details/72868546?locationNum=3&fps=1 一. ├── build    ...

  5. 生理周期POJ 1006

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 138101   Accepted: 44225 Description 人生 ...

  6. swipper的一个小坑

    今天闲着没事用swipper写轮播图时,发现swipper的控制不起作用,当时就很难受, 后来经过自己的仔细排查发现,用了swipper4的语法,结果引入的CSS和JS都是Swipper3版本的. 特 ...

  7. html/css更改子级继承的父级属性

    一个精美的网页需要的样式很多,在父级上设置的字体颜色或者大小,在其子元素中不一定全部相同,这时候要更改其中某一项的样式怎么办呢. 很多新手朋友就不明白,会迷惑为什么我使用class单独命名了,重新设置 ...

  8. Python入门基础之list和tuple

    Python之创建list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: > ...

  9. ubuntu12.0.4开启root用户登陆

    1.命令:sudo passwd root 为root分配密码,按提示进行设置就好. 2.打开终端,输入以下命令: sudo -s 进入root账户下: cd /etc/lightdm       g ...

  10. 你不可不知的Java引用类型之——虚引用

    定义 虚引用是使用PhantomReference创建的引用,虚引用也称为幽灵引用或者幻影引用,是所有引用类型中最弱的一个.一个对象是否有虚引用的存在,完全不会对其生命周期构成影响,也无法通过虚引用获 ...