Apache中伪静态的实现

修改Apache配置(打开重写功能)

  1. 打开Apache目录下的conf文件夹,并且使用编辑器打开改文件夹下的httpd.conf(以下称配置文件)文件。

  2. 在配置文件中通过搜索下面的查找功能,输入LoadModule rewrite并且查找到LoadModule rewrite_module modules/mod_rewrite.so,若前面带有“#”(#代表注释),则去掉“#”。

  3. 再次通过查找功能查找关键字AllowOverride,并修改所有该关键字(一共有三处)后面的NoneAll

  4. 最后ctrl + s保存配置文件,且修改成功。

实现伪静态

  1. 在网站的根目录(域名访问目录或IP地址访问目录)下创建.htaccess文件夹(有的不必再次创建),有需要的可以创建nginx.htaccess文件夹(有的不必再次创建)

    注:该目录不能直接创建,需要在文件保存时直接输入改名字创建

    图片说明

  2. 在编辑软件中打开该文档

  3. 在第一行输入RewriteEngine on

  4. 第二行即可以写重写规则,可用正则表达式匹配域名。基本常用语法如下:

    ^ 表示正则表达式的开始
    $ 表示正则表达式的结束
    \w 匹配字母或数字或下划线或汉字
    \s 匹配任意的空白符
    \d 匹配数字
    \b 匹配单词的开始或结束
    ^ 匹配字符串的开始
    $ 匹配字符串的结束
    * 重复零次或更多次
    + 重复一次或更多次
    ? 重复零次或一次
    {n} 重复n次
    {n,}重复n次或更多次
    {n,m} 重复n到m次
    例如:
    ReWriteRule ^(\w*)\.html$ $1.php [L]

    我们来分析一下上面的例子。其中^(\w*)\.html中的 ^ 表示正则表达式的开始,(\w*)表示第一个(变量)内容(后面用$1来表示这第一个内容),\w*表示匹配任意字母或数字或下划线可以重复零次或更多次,\.中\代表转义符号,对.进行转义。\.html表示正常的.html

    后面的$1表示前面(\w*)的内容,[L]表示上一个规则标记

    图片说明

  5. 现在在该根目录文件下创建一个php文件(其它文件也行),名字随意(我这里创建的有index.php文件和admin.php文件),并且分别有不同的内容

    图片说明
    图片说明

  6. 在浏览器中输入域名(或IP),然后输入php文件的文件名(我这里的index和admin),后面加.html

    图片说明

    图片说明

    都成功显示了对应的PHP文件中的内容,至此,伪静态的基本运用完成了

常用的一些重写规则

RewriteEngine On

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

RewriteRule ^test([0-9]*).html$ test.php?id=$1
比如:http://www.xxx.com/test8.html  -> http://www.xxx.com/test.php?id=8

RewriteRule ^cat-([0-9]+)-([0-9]+)\.html$ cat.php?id1=$1&id2=$2
比如:http://www.xxx.com/cat-1-3.html -> http://www.xxx.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.xxx.com/cat-zbc2ac-3-5.html -> http://www.xxx.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.xxx.com/cat1-4-3-8.html -> http://www.xxx.com/cat1.php?id1=4&id2=3&id3=8

RewriteRule ^cat([0-9]*)/$ cat.php?id1=$1
比如:http://www.xxx.com/cat5/ -> http://www.xxx.com/cat.php?id1=5

RewriteRule ^catm([0-9]*)/([0-9]*)/$ catm.php?id1=$1&id2=$2
比如:http://www.xxx.com/catm6/3/ -> http://www.xxx.com/catm.php?id1=6&id2=3

结尾

由于伪静态是本人刚接触到的,所以本人也不算太熟,但是本人想通过学一点记一点的方式将本人的学习方法和理解思路分享给大家,同时也是为我本人自己留笔记。由于本人比较笨拙,在开始时理解伪静态耗费了一些时间,所以在理解伪静态后,想尽量写得详细点,以便新手看了就会,所以本章内容会过于繁琐。

所谓重写规则,实则就是通过正则表达式的匹配功能匹配网址。所以应该重新放在学习正则表达式上,如果能熟练使用正则表达式,相信这个也不会困难。

本文参照https://www.cnblogs.com/johnhery/p/9831611.html