`

apache url rewrite 的RewriteRule参数详解

 
阅读更多

原文链接:http://www.javaarch.net/jiagoushi/871.htm

 

 

apache url rewrite 的RewriteRule参数详解

我们经常会在apache那边对一些url进行一些重写操作,那么就会涉及到很多的重写策略的选择,比如重定向的方式,参数的处理,规则匹配的顺序等。

比如我们某个应用会有下面的url rewrite规则:下面是对于域名imall.test.com访问的时候需要重定向到http://page.test.com/channel/imall/index.html这个url上,

	<VirtualHost *>
		ServerName imall.test.com#if("${industry_port}"!="80"):${industry_port}#end

		RewriteEngine on
		RewriteCond %{HTTP_HOST} =imall.test.com [NC]
		RewriteRule ^/$ http://page.test.com/channel/imall/index.html [L,R]
	</VirtualHost>
	
之前是想上面这么写的,但是发现浏览器的url变了,也就是R其实是外部重定向,那么我希望浏览器的url不改变,那么就需要内部重定向或者反向代理的设计。此时只能参考官方文档了:http://httpd.apache.org/docs/2.2/rewrite/flags.html

这里列出很多的参数:在每条规则后面可以加上多个参数,每个参数用逗号分隔

	RewriteRule pattern target [Flag1,Flag2,Flag3]
	
B (escape backreferences):非字母字符会被编码,
比如有个url为search.php?term=x & y/z,那么此时不设置B参数时会被编码成search.php?term=x%20&y%2Fz=,也是不对的,那么设置B参数之后会被编码成/search.php?term=x%20%26%20y%2Fz,这样对于url rewrite的规则才能被正确解析转发。

C|chain  如果匹配,会继续匹配下一条规则,如果不匹配则跳过后面所有规则;

CO|cookie 可以给当前url设置cookie,规则如:[CO=NAME:VALUE:DOMAIN:lifetime:path:secure:httponly]
示例:

	RewriteEngine On
	RewriteRule ^/index\.html - [CO=frontdoor:yes:.example.com:1440:/]
	
DPI|discardpathinfo 丢弃PATH_INFO 信息

E|env 设置环境变量 [E=VAR:VAL] [E=!VAR]
示例:

	RewriteRule \.(png|gif|jpg) - [E=image:1]
	CustomLog logs/access_log combined env=!image
	
F|forbidden 直接返回403状态码

	RewriteRule \.exe - [F]
	
G|gone 返回410 状态码,表示资源不再可用

	RewriteRule oldproduct - [G,NC]
	
H|handler 指定请求被某个handler处理,下面这个url表示被php处理引擎处理

	RewriteRule !\. - [H=application/x-httpd-php]
	
L|last 匹配了就不再匹配后面的规则

	RewriteBase /
	RewriteCond %{REQUEST_URI} !=/index.php
	RewriteRule ^(.*) /index.php?req=$1 [L,PT]
	
N|next 重新从第一条规则开始匹配

	RewriteRule (.*)A(.*) $1B$2 [N]
	
NC|nocase 大小写不敏感
	
	RewriteRule (.*\.(jpg|gif|png))$ http://images.example.com$1 [P,NC]
	
NE|noescape 不转码特殊字符,默认是会把&,?等特殊字符转成16进制编码,

	RewriteRule ^/anchor/(.+) /bigpage.html#$1 [NE,R]

NS|nosubreq 规则不作用于子请求上, SSI (Server Side Include) 

P|proxy 做为反向代理转发请求,这样浏览器url就不会改变

	RewriteRule /(.*)\.(jpg|gif|png) http://images.example.com/$1.$2 [P]
	
PT|passthrough url作为一个文件路径处理

	Alias /icons /usr/local/apache/icons
	RewriteRule /pics/(.+)\.jpg /icons/$1.gif [PT]
	
QSA|qsappend 带上query参数

	RewriteRule /pages/(.+) /page.php?page=$1 [QSA]
	
R|redirect 重定向 默认302 重定向

S|skip 跳过不想执行的规则匹配

	# Is the request for a non-existent file?
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	# If so, skip these two RewriteRules
	RewriteRule .? - [S=2]
	RewriteRule (.*\.gif) images.php?$1
	RewriteRule (.*\.html) docs.php?$1
	
T|type 指定MIME type 类型

	# Serve .pl files as plain text
	RewriteRule \.pl$ - [T=text/plain]

	# Files with 'IMG' in the name are jpg images.
	RewriteRule IMG - [T=image/jpg]
 
    

 

 

0
6
分享到:
评论

相关推荐

    Apache URL Rewrite功能配置

    ### Apache URL Rewrite功能配置知识点详解 #### 一、Apache URL Rewrite简介 Apache URL Rewrite功能是Apache Web服务器的一个强大工具,它允许用户通过一系列规则来改变客户端请求的URL,从而实现URL重写、...

    urlrewrite2伪静态与使用文档(IIS)

    **urlrewrite2模块详解** urlrewrite2是IIS中的一个ISAPI扩展,它允许管理员或开发者通过编写规则来改变HTTP请求的URL,使得原始的动态URL转化为静态或看似静态的URL。这个过程对用户来说是透明的,但能提高网站...

    Apache Rewrite Module 的重定向问题

    Apache的Rewrite Module(重写模块)是Apache服务器中一个非常强大的工具,主要用于URL重写及重定向功能。它通过一系列规则对请求进行处理,实现动态地改变请求路径,从而达到优化网站结构、改善用户体验的目的。 ...

    linux_apache_rewrite编译配置.pdf

    《Linux Apache Rewrite编译配置详解》 Apache Rewrite模块是Apache HTTP服务器中的一个重要组件,主要用于URL重写和路由重定向。这个模块使得我们能够基于正则表达式对请求的URL进行动态转换,从而实现诸如隐藏...

    Apache2.2 初级URL重写指南(RewriteRule)

    #### 三、RewriteRule详解 **RewriteRule**的基本语法为: ```apache RewriteRule pattern replacement [flags] ``` 其中: - **pattern**:正则表达式模式,用于匹配请求的URL。 - **replacement**:替换字符串...

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

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

    Apache伪静态Rewrite详解

    Apache伪静态Rewrite技术是一种强大的URL重写工具,它允许开发者通过正则表达式来转换和控制用户请求的URL,从而实现对网站内容的动态处理而显示为静态页面的效果。这项技术对于SEO优化和用户体验提升有着重要作用,...

    APACHE_RewriteRule

    ### Apache的mod_rewrite模块详解 #### 一、模块概述 `mod_rewrite`是Apache服务器的一个强大功能模块,它提供了一种基于正则表达式的实时URL重写机制。通过这一机制,用户可以灵活地修改和控制到达服务器的URL,...

    destoon之URL Rewrite(伪静态)设置方法详解

    这些规则是通过RewriteEngineOn来启用URL重写引擎,然后通过一系列的RewriteRule来定义URL重写规则。例如,将形如“***”的动态URL转换为“***”的静态URL。 2. 如果服务器是Apache,并且需要在httpd.conf文件中...

    Apache配置详解(最好的APACHE配置教程)

    `mod_rewrite`模块提供了URL重写功能,这在实现SEO友好URL、隐藏真实路径或实现动态URL静态化时非常有用。通过`RewriteRule`和`RewriteCond`指令,我们可以编写复杂的规则来处理URL。 六、PHP集成与配置 Apache与...

    Rewrite伪静态组件

    Rewrite是Apache服务器中的一种URL重写技术,通过使用.htaccess或者httpd.conf配置文件中的RewriteRule指令,可以实现URL的动态到静态转换。这个技术的核心在于Apache服务器的mod_rewrite模块,该模块允许开发者创建...

    伪静态组件Rewrite

    它的基本格式为`RewriteRule pattern substitution [flags]`,其中`pattern`是匹配URL的正则表达式,`substitution`是匹配成功后的替换目标,`flags`是一些可选参数,如[L](表示最后一规则)、[R](强制外部重定向...

    Apache中Virtual Host虚拟主机配置及rewrite参数说明

    ### Apache中Virtual Host虚拟主机配置及Rewrite参数详解 #### 一、Virtual Host虚拟主机配置 **1.1 概念介绍** 在Apache服务器中,Virtual Host(虚拟主机)技术允许在同一台物理服务器上托管多个不同的网站或Web...

    mod_rewrite - Apache HTTP服务器.pdf

    ### mod_rewrite - Apache HTTP服务器模块详解 #### 模块概述 `mod_rewrite`是Apache HTTP服务器的一个强大且灵活的模块,它提供了基于规则的实时URL重写能力。这个模块允许服务器根据一系列预定义的规则来修改...

    Apache开启伪静态

    Apache 开启伪静态 Rewrite url重写规则详解 Apache 的 Rewrite 模块提供了强大的 URL 重写功能,通过在配置文件中添加规则,能够实现复杂的 URL 转换和跳转。本文将详细介绍 Apache 开启伪静态的配置和应用。 一...

    Apache配置详解_最好的APACHE配置教程

    通过RewriteEngine、RewriteRule和RewriteCond,可以实现URL的动态转换,这对于SEO和内部路由非常重要。 九、性能优化 1. KeepAlive:启用持久连接以减少TCP握手开销。 2. MaxKeepAliveRequests:限制每个连接处理...

    Apache下htaccess的配置使用详解(转)

    `.htaccess`还支持使用`mod_rewrite`模块进行更复杂的URL重写,这对于SEO友好和隐藏实际URL路径很有用。例如: ```apacheconf RewriteEngine On RewriteRule ^blog/(\d+)-(.*)$ blog.php?id=$1&title=$2 [L] ``` 这...

    Apache伪静态配置

    ### Apache伪静态配置详解 在Web开发中,伪静态配置是一种常见的优化手段,它通过将动态页面URL重写为静态页面URL的形式,不仅提升了用户体验,还对搜索引擎优化(SEO)有着显著的好处。本文将深入探讨Apache服务器...

Global site tag (gtag.js) - Google Analytics