`
conkeyn
  • 浏览: 1529302 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Apache的rewrite规则详细介绍

    博客分类:
  • PHP
阅读更多

rewrite标志

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

rewrite时服务器变量:
HTTP headers:HTTP_USER_AGENT, HTTP_REFERER, HTTP_COOKIE, HTTP_HOST, HTTP_ACCEPT
connection & request: REMOTE_ADDR, QUERY_STRING
server internals: DOCUMENT_ROOT, SERVER_PORT, SERVER_PROTOCOL
system stuff: TIME_YEAR, TIME_MON, TIME_DAY

Rewrite规则表达式的说明:
. 匹配任何单字符
[chars] 匹配字符串:chars
[^chars] 不匹配字符串:chars
text1|text2 可选择的字符串:text1或text2
? 匹配0到1个字符
* 匹配0到多个字符
+ 匹配1到多个字符
^ 字符串开始标志
$ 字符串结束标志
\n 转义符标志

反向引用 $N 用于 RewriteRule 中匹配的变量调用(0 <= N <= 9)
反向引用 %N 用于 RewriteCond 中最后一个匹配的变量调用(1 <= N <= 9)

RewriteCond标志符
'nocase|NC'(no case)忽略大小
'ornext|OR' (or next condition)逻辑或,可以同时匹配多个RewriteCond条件

RewriteRule适用的标志符
'redirect|R [=code]' (force redirect)强迫重写为基于http开头的外部转向(注意URL的变化) 如:[R=301,L]
'forbidden|F' (force URL to be forbidden)重写为禁止访问
'proxy|P' (force proxy)重写为通过代理访问的http路径
'last|L' (last rule)最后的重写规则标志,如果匹配,不再执行以后的规则
'next|N' (next round)循环同一个规则,直到不能满足匹配
'chain|C' (chained with next rule)如果匹配该规则,则继续下面的有Chain标志的规则。
'type|T=MIME-type' (force MIME type)指定MIME类型
'nosubreq|NS' (used only if no internal sub-request)如果是内部子请求则跳过
'nocase|NC' (no case)忽略大小
'qsappend|QSA' (query string append)附加查询字符串
'noescape|NE' (no URI escaping of output)禁止URL中的字符自动转义成%[0-9]+的形式。
'passthrough|PT' (pass through to next handler)将重写结果运用于mod_alias
'skip|S=num' (skip next rule(s))跳过下面几个规则
'env|E=VAR:VAL' (set environment variable)添加环境变量

实际操作

例子:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^MSIE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Opera [NC]
RewriteRule ^.* - [F,L] 这里”-”表示没有替换,浏览器为IE和Opera的访客将被禁止访问。

例子:
RewriteEngine On
RewriteBase /test
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ([^/]+)$ /test/$1.php
#for example: /test/admin => /test/admin.php
RewriteRule ([^/]+)\.html$ /test/$1.php [L]
#for example: /test/admin.html => /test/admin.php

限制目录只能显示图片
< IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !^.*\.(gif|jpg|jpeg|png|swf)$
RewriteRule .*$ - [F,L]
< /IfModule>

分享到:
评论

相关推荐

    Apache Rewrite Module 的重定向问题

    5. **调试与测试**:在实际部署之前,建议先在本地环境中充分测试Rewrite规则。可以利用`ErrorLog`等日志文件来追踪Rewrite引擎的工作过程,以便发现问题并及时调整。 通过上述介绍,我们可以看到Apache Rewrite ...

    Apache的ReWrite的应用

    为了调试Rewrite规则,Apache提供了`RewriteLog`和`RewriteLogLevel`指令,可以记录重写过程的详细信息,帮助开发者找出问题所在。 总之,Apache的Rewrite模块是Web服务器中的一个强大工具,通过灵活的规则设定,...

    apache rewrite规则实现白名单

    下面,我们详细分析给出的Rewrite规则: 1. `&lt;IfModule mod_rewrite.c&gt;`:这是Rewrite规则的开始,确保mod_rewrite模块已经启用。 2. `RewriteEngine on`:开启Rewrite引擎。 3. `RewriteCond %{REQUEST_URI} ^/$`...

    Apache rewrite重写规则的常见应用

    为了让客户不会因此受到任何影响,最好的方法就是使用Apache Rewrite Rule(重写规则)。  二、重写规则的作用范围  —- 1.使用在Apache主配置文件httpd.conf中。  —- 2.使用在httpd.conf里定义的配置中。 ...

    Apache Rewrite url重定向功能的简单配置

    平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 2.Apache Rewrite的配置 Apache下的Rewrite配置主要有两种,一种是针对整个apache服务器的配置,此种配置的Rewrite规则是直接在httpd.conf下书写。...

    专业针对DZ6[1].0+DZ6.1论坛+UCHome Rewrite规则.rar

    本知识点将详细讲解如何为DZ6.0及DZ6.1论坛和UCHome配置Rewrite规则,以实现URL的伪静态化,提升网站的SEO友好性和用户体验。 首先,Rewrite规则是一种基于Apache服务器的mod_rewrite模块功能,它允许我们通过定义...

    discuz的rewrite规则下载

    作为一款知名的论坛系统,其官方提供了一套专门用于URL重写的规则,即“Rewrite规则”。本文旨在对这些规则进行详细的解析,并指导用户如何正确地应用这些规则。 #### 二、Rewrite规则基础概念 在深入解析Discuz!...

    Apache的URL重写规则的标志详细说明

    以下是对Apache URL重写规则中一些常用标志的详细说明: 1. **R[=code]**: 强制外部重定向。此标志会在替代字符串前添加主机名和端口号,形成完整的外部URL,并使用指定的HTTP状态码进行重定向。默认情况下,状态码...

    如何在Apache 服务器下配置URL 静态化的 Rewrite 规则.docx

    ### 如何在Apache服务器下配置URL静态化的Rewrite规则 #### 一、了解URL静态化与Rewrite规则 **URL静态化**是指将原本动态的URL(如包含多个参数的PHP页面)转换成类似静态页面的形式(如.html或.htm)。这种做法...

    关于Apache_mod_rewite的中文配置和RewriteRule规则详细介绍

    关于Apache_mod_rewrite的中文配置与RewriteRule规则详细介绍 在当今互联网时代,网站优化与安全性是网站管理员关注的焦点。Apache_mod_rewrite作为一个强大的工具,它不仅能够帮助网站优化URL结构,提升用户体验,...

    解析 .htaccess 文件 apache rewrite

    模块`mod_rewrite`是Apache的一个核心模块,它提供了URL重写和URL路由的能力,这对于创建SEO友好的伪静态URL、实现URL短链、隐藏真实路径等场景非常有用。在`.htaccess`文件中启用`mod_rewrite`模块,你需要开启...

    Apache URL Rewrite功能配置

    ### Apache URL Rewrite功能配置知识点详解 #### 一、Apache URL Rewrite简介 Apache URL Rewrite功能是Apache Web服务器的一...- **测试**:在正式环境中部署之前,务必充分测试URL Rewrite规则,确保其按预期工作。

    apache的rewrite规则使用说明

    rewrite标志R[=code](force redirect) 强制外部重定向 强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。F(force URL to be forbidden)禁用URL,...

    Apache服务器下配置URL 态化的Rewrite规则.docx

    Apache服务器下的URL重写(Rewrite)规则是用于实现URL静态化的重要技术,这...总的来说,Apache的Rewrite规则是一个强大的工具,能够帮助开发者灵活地控制和转换网站的访问路径,从而提高网站的性能和搜索引擎的可见性。

    apache rewrite rule

    以下是关于Apache Rewrite Rule的详细解释: 1. **RewriteEngine On/Off**:这是开启或关闭URL重写功能的开关。设置为`On`表示启用,`Off`则禁用。在每个你需要使用重写功能的虚拟主机或`.htaccess`文件中,都需要...

    Discuz! X2 配置URL伪静态Rewrite规则

    Discuz! X2 配置URL伪静态Rewrite规则,里面详细讲解了apache服务器下 Discuz! X2 配置URL伪静态Rewrite规则和IIS下得Discuz! X2 配置URL伪静态Rewrite规则

    nginx设置rewrite规则

    下面将详细介绍如何在LNMP环境中配置Nginx的rewrite规则。 首先,了解rewrite规则的基本概念。Nginx的rewrite模块允许我们根据特定的条件重写请求的URI,这在实现URL路由、隐藏真实路径、SEO优化等方面非常有用。它...

    Apache的Mode Rewrite模块和.htaccess文件配合.docx

    在Mac OS X下,需要在/etc/apache2/httpd.conf文件中启用Mode Rewrite模块,然后在/private/etc/apache2/users/[用户名].conf文件中添加Rewrite规则。 四、Wordpress固定链接的实现 Wordpress固定的链接是指使用...

Global site tag (gtag.js) - Google Analytics