.htaccess文件格式:

<ifmodule mod_rewrite.c>
RewriteEngine On
#这里是你的规则
</ifmodule>

规则例子:

例子1:访问/100.html  时,执行 /id=100

<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteRule  ^([0-9]+).html ?id=$1  [L]
</ifmodule>

例子2:访问 /1-3.html 时,执行 /cid=1&id=3

<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteRule  ^([0-9]+)-([0-9]+).html ?cid=$1&id=$2  [L]
</ifmodule>

例子3: 访问/tag-1.html时,执行 /?tag=1

<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteRule  ^tag-([0-9]+).html ?tag=$1  [L]
</ifmodule>

上面的合起来就是:

<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteRule  ^([0-9]+)-([0-9]+).html ?cid=$1&id=$2  [L]
RewriteRule  ^([0-9]+).html ?id=$1  [L]
RewriteRule  ^tag-([0-9]+).html ?tag=$1  [L]
</ifmodule>

其中前面的正则表达式匹配的字符.自动转换成后面的 $1 $2 $3

每个括号代表一个匹配项. 分别对应后面的 $1 $2 $3

为了更好的看到效果

我们可以在一个页面的最上方写入下面php代码:

<?php var_dump($_GET);?>

注意事项:

最前面必须要加^这个字符.^正则表达式中 这个代表输入的开始位置,如果不加这个.

在浏览  /tag-1.html时,他仍然可以匹配到第一个规则,就会实际访问 id=1

因为规则匹配成功后 就不会往下再匹配了. 后面加了 [L]就是代表停止处理接下来的规则


如果设置无效.请参考下文:

1、安装 mod_rewrite 模块

     因为 Apache 服务器默认是没有打开 mod_rewrite 模块的,所以我们必须手动来启动。打开 Apache 的配置文件httpd.conf 文件,找到下面一行:

     #LoadModule rewrite_module modules/mod_rewrite.so

     前面的 # 号是 Apache 配置文件的注释符,也就是 Apache 服务器没有加载该模块。将前面的 # 号去掉,保存后重启 Apache 服务器,这是我们就实现了加载 mod_rewrite 这个模块了。(提示:任何一次对 Apache 的配置文件 httpd.conf 文件都是要重新启动 Apache 才能生效的)

2、新建 .htaccess 文件

     在 windows 系统默认的情况下是不能新建没有文件名的文件的,这里建议大家使用 vim 这个编辑器来新建。方法是打开 vim 编辑器随便输入一段文字,然后保存为 .htaccess 即可。很多朋友因为习惯了 windows 系统,所以新建这个文件很头疼。还有就是文件名一定不要错,我今天写的时候把文件保存成了.htacess,看到没有,少了一个c,怎么调试都不对,还好最后发现了这个低级错误。

3、配置 .htaccess 文件

.htaccess 文件务必放在你项目的根目录下,不要放在其他文件夹下。配置 .htaccess 文件的格式如下:

<ifmodule mod_rewrite.c>
RewriteEngine On
#这里是你的规则
</ifmodule>

解释:RewriteEngine On :启动URL重写引擎

先看如下一个配置好了的 .htaccess 文件实例:

  <ifmodule mod_rewrite.c>
   RewriteEngine On
  RewriteRule ^index\.html$ /index.php [L]
  RewriteRule ^shop/(.+)/$ shop/shop.php?providerId=$1 [L] 
  </ifmodule>

分析:上面 .htaccess 文件就写了二条规则。当在浏览器中输入 index.html 时,后台调用的是 index.php 文件。符号“^”是以后面的字符开头,相信熟悉正则表达式的朋友不会陌生吧,符号“$”是以前面的字符结尾。符号L表示停止处理接下来的规则。最后一条当我们在浏览器中输入 shop/2322 时,后台调用 shop.php文件并传递参数provider=2322 。

配置规则,大家照着那一条去写吧,记得每行后面加个 L 符号。


再写一个:


http://qingzhouquanzi.com/category/12 想重写成 http://qingzhouquanzi.com/category.php?id=12

RewriteRule  ^category/([0-9]+)$  category.php?id=$1

如果有多页的文章 如: http://qingzhouquanzi.com/category/12/3 重写成 http://qingzhouquanzi.com/category.php?id=12&page=3


  RewriteRule ^category/([0-9]+)/([0-9]+)$  category.php?id=$1&page=$2


如果你想升级你的站点,又要保证老的链接都可用,你也可以通过mod_rewrite模块来实现。你仅仅需要写一个规则之处这个网页被永久的移动了。例子如下:


  RewriteRule ^oldpage.html$ newpage.html [R=301]


相关推荐

zblog子目录伪静态设置,zblog二级目录.htaccess规则

zblog二级目录的规则依然需要放到跟目录下在伪静态管理中心 点击创建.htaccess文件.然后用ftp把那个文件下载下来(跟目录那个)然后把中间的规则复制一份. 加上子目录,即可!相当于把两个.h

zblog伪静态设置方法(小白版说明)

第一步:打开静态管理中心插件(系统自带的那个)第二步:选择伪静态 并保存第三步:如果是Apache服务器,则创建.htaccess文件如果是Nginx服务器,则把规则粘贴到宝塔里

nginx伪静态规则教程: 自定义设置任意伪静态规则

关于zblog的伪静态规则设置.后台有其他程序的.,网上也有,就不多说了那么自定义的如何写呢?ng伪静态设置可以参考下面两行代码的写法 和 解释.寻找其中的规律.location / { r

帝国cmstags页面url伪静态设置

帝国cms的tags页面url默认是 /e/tags/index.php?tagname=XXX这种形式的,我们希望的是后缀编程.html这种形式的那么如何来设置呢?如图所示:说明:采用静态页面时不需

Nginx环境下设置zblog伪静态方法

Apache的环境非常简单.可以点击创建 .htaccess就可以了Nginx环境下设置伪静态,并没有那个一键创建的按钮.只看到了这样的一个提示.宝塔面板的修改方法:-----------------

apache网站访问日志的设置

修改配置文件:文件位置:apache安装目录下的conf/httpd.conf搜索 LogFormat 快速定位到以下位置.常用格式:远程主机时间域名请求第一行uaReferer状态码%h%t%V%

js判断网页时间,判断纯静态伪静态网页

删除浏览器上的网址javascript:alert(document.lastModified)复制以上代码.到浏览器.回车键!即可查看网页真实时间.如果一直变化的:伪静态如果不变的:纯静态

网站页面到底选 纯静态伪静态、还是动

带参数的动态页面。不用考虑了。那么纯静态页面和伪静态该如何选择?如果使用vps服务器,空间充足。抛开储存空间的使用问题来分析,如下:如果服务器配置好,或者网站不算特别多。可以选择伪静态。伪静态优点:如

宝塔面板Nginx日志文件格式修改为自定义格式 和 log_format详解

第一步:设置log_format打开/www/server/nginx/conf/nginx.conf 在里面添加:log_format zbloglog '$remote_addr [$ti

VMware15 centOs 7安装教程(图文详解

安装教程:https://blog.csdn.net/qq_44714603/article/details/88829423 iso下载http://mirrors.cqu.edu.cn/CentO