apache伪静态规则解析

最近有个客户有个要求,昨天折腾了一会,没解决,今天没啥就多学习学习

还是根据例子来学习比较快

1 简单的重定向规则

RewriteEngine On  //启动规则
RewriteBase /       //根目录启动伪静态
RewriteRule ^index/$ index.php  //访问index/ 那么就是访问index.php
RewriteRule ^register/$ /s_youka/register.html  //访问register  就是访问/s_youka/register.html

2  稍微复杂一点的

RewriteEngine on
RewriteRule ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1list.php?page=$1&id=$2
//后面的 $1 $2 对应前面的()内的代码  其他的是正则规则
//^代表开头$代表结束 [0-9]+ 是多个0到9之间的数字 \是转义后面的.

3  更精准一些的

/type.php?typeid=* –> /type*.html
/type.php?typeid=*&page=* –> /type*page*.html
RewriteRule ^/type([0-9]+).html$ /type.php?typeid=$1 [PT]
RewriteRule ^/type([0-9]+)page([0-9]+).html$ /type.php?typeid=$1&page=$2 [PT]
//重点介绍下PT 交给下一条处理

1) R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
4) P(force proxy) 强制使用代理转发。
5) L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
6) N(next round) 重新从第一条规则开始运行重写过程。
7) C(chained with next rule) 与下一条规则关联
如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。
8) T=MIME-type(force MIME type) 强制MIME类型
9) NS (used only if no internal sub-request) 只用于不是内部子请求
10) NC(no case) 不区分大小写
11) QSA(query string append) 追加请求字符串
12) NE(no URI escaping of output) 不在输出转义特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zoo
13) PT(pass through to next handler) 传递给下一个处理
例如:

复制代码 代码如下:

RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理
Alias /def /ghi

14) S=num(skip next rule(s)) 跳过num条规则
15) E=VAR:VAL(set environment variable) 设置环境变量

4  discuz3x的规则

RewriteEngine On  //开启
RewriteBase / //当前根目录
RewriteCond %{QUERY_STRING} ^(.*)$  //定义了规则生效的条件-查询字符串
RewriteRule ^topic-(.+)\.html$ portal.php?mod=topic&topic=$1&%1
//topic-开头 .htm后缀  实际上市访问了 后面的地址

5 nginx类似

Nginx下设置伪静态方法与Apache差不多,直接在nginx.conf (或者在对应的*.conf) 中找到需设置伪静态规则的服务器对应字段,在server{ location/{ } }中添加以下代码:

server {
    listen 80 default_server;
    server_name _;
    location / {
         root /usr/share/nginx/html;
         index index.html index.htm;
         rewrite ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1list.php?page=$2&id=$3;
         }
}

添加后重启Nginx服务即可生效!

原文地址:https://www.cnblogs.com/baker95935/p/9791231.html

时间: 2024-10-05 12:28:23

apache伪静态规则解析的相关文章

建站初学者必知的wordpress在Nginx/Apache/IIS中的伪静态规则

在搭建好wordpress博客以后,我都是先让大家配置好文章的url格式为/%postname%.html这样的自定义结构的.比如是阿里云的虚拟主机这样配置以后,文章页面还是可以打开的,但是有的服务器或者是虚拟主机就打不开了,这就需要大家配置好伪静态的规则. 现在,我就把怎么配置wordpress的伪静态规则发出来给大家一起来学习. wordpress的Nginx/Apache/IIS伪静态规则 NGINX伪静态规则 Nginx环境是Linux服务器里面常见的网站配置环境,完整网站环境是Linu

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

转自:http://blog.csdn.net/qingli518/article/details/9118361 htaccess语法教程apache服务器伪静态规则教程 注:如果你是为了找Discuz!论坛的为静态规则的话,其实不用看这里,Discuz!的后台有个链接点进去直接Copy就是了.PHPwind的我就不知道了,没用过,后台应该也有吧. 这几天一直在研究Apache的重写规则,虽然网上有很多教程,不过发现大部分都是抄袭一个人的,一点都不全,所以我想写一个简单的易于理解的教程,我学习

dedecms织梦移动版伪静态 - 实现与PC电脑版静态地址url一致教程+伪静态规则

电脑版静态效果 移动版伪静态效果 以下教程所修改的文件(utf8/gbk)打包下载: 修改或者覆盖文件之前请备份以下4个文件\m\index.php\m\list.php\m\view.php\include\arc.listview.class.php 链接: https://pan.baidu.com/s/1i49ABe1 密码: 2wid 电脑版静态生成这里就不多说了,移动版伪静态操作教程如下: 1.移动版域名 m.123.com 解析并指向绑定目录到网站目录的m文件夹 2.后台-系统配置

apache 伪静态 .htaccess

虽然网上有很多教程,但是我在这里进行简单对我用到的总结一下. 加载Rewrite模块: 在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号"#",或添加这句. .htacess文件,开头内容如下: RewriteEngine on RewriteEngine on是代表开启rewrite.在正是写规则前,先为大家讲一下重写中设计到的特殊字符的含义.和普通正则是通用的! *

apache rewrite规则

在开篇之前:我想说这篇文章其实是我刚刚接触Rewrite的时候学习的文档,应属转载,但是在这里我不想写明原地址,原因是文章中大多数给出的配置命令经实验都是错误的.需要原文的可以在谷歌上搜索一下"Apache Rewrite 规则详解"好在我对正则表达式有所了解,把原文的代码都通过自己的理解改写了一下,并都能够达到题设的要求,并联想需求添加了例子.本文是经过我实验后修改有效的,如果还是出现500错误请去掉 # 及后面的注释(也许有些环境不支持中文注解),如果还是错误请在下面给我留言. 1

Apache Rewrite 规则详解

转自:http://www.cnblogs.com/top5/archive/2009/08/12/1544098.html 1.Rewrite规则简介: Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式.如果要想用到rewrite模块,必须先安装或加载rewrite模块.方法有两种一种是编译apache的时候就直接 安装rewrite模块,别一种是编译apache时以DSO模式安装

Nginx伪静态配置和常用Rewrite伪静态规则

伪静态是一种可以把文件后缀改成任何可能的一种方法,如果我想把php文件伪静态成html文件,这种相当简单的,下面来介绍nginx 伪静态配置方法有需要了解的朋友可参考. nginx里使用伪静态是直接在nginx.conf 中写规则的,并不需要像apache要开启写模块(mod_rewrite)才能进行伪静态. nginx只需要打开nginx.conf配置文件,在server里面写需要的规则即可. 代码如下: server { listen       80; server_name  haha.

Apache伪静态配置

1:打开Apache安装目录下httpd.conf,搜索"LoadModule rewrite_modulemodules/mod_rewrite.so",找到这一行,去掉前面的"#":2:找到"AllowOverride None"改为"AllowOverride All" 有两个地方需要修改3:新建.haccess文件,放在当前网站根目录下,在.haccess文件中写伪静态规则,比如: <IfModule mod_r

SEO工具箱:PHP自动生成PHPCMS伪静态规则.htaccess

这个做SEO的时候非常需要,以前从DEDECMS转战PHPCMS,最痛苦的就是设置伪静态,一直想设置 栏目名/文章ID.html 这样的规则,但是显然PHPCMS默认不提供,只提供最原始的 list-1-1.html ,show-1-1.html,这种URL对搜索引擎和用户都是不友好的(不符合百度搜索引擎指南中对URL友好的描述),哈哈,或者只是自己纠结. 如果非要以前非要这么设置的话,就得一条条手工加,没想到居然有一天自己也能破这个问题(其实只是个简单的读数据库的问题). 第一步:PHPCMS