`
天梯梦
  • 浏览: 13730443 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

Apache Rewrite伪静态基本及URL跳转

阅读更多

Rewirte主要的功能就是实现URL的跳转,Rewirte代码的正则表达式是基于Perl语言。基于服务器级的(httpd.conf)和目 录级的 (.htaccess)两种方式,而我们Apache一般用的是目录级的 (.htaccess)方式,所以海天这里学习和记录的也就是(.htaccess)方式,俗称伪静态。

 

既然Rewirte主要的功能就是实现URL的跳转,所以海天就直接从URL跳转入手,废话不多说,开始!

一般的.htaccess伪静态跳转写法为(下例为输入 a.bbb.cn 的域名时跳转到www.bbb.cn):

RewriteEngine on
RewriteCond %{HTTP_HOST} ^a.bbb.cn [NC]
RewriteRule ^(.*) http://www.bbb.cn/ [L]

 

Apache Rewrite规则重写的标志

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) 设置环境变量
 

 

以下直接举例说明:

例一、在一个虚拟主机里定义的Rewrite规则。功能是把client请求的URL地址前缀不是www.aaa.cn和 70.40.213.183都跳转到主机前缀为 http://www.aaa.cn。这样就避免相同内容的网页有多个指向的域名,如http://aaa.cn,而不利于SEO。

RewriteEngine on #打开rewirte功能
RewriteCond %{HTTP_HOST} !^www.aaa.cn [NC] #声明Client请求的URL地址中前缀不是www.kiya.cn,其中 [NC] 的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^70.40.213.183 [NC] #声明Client请求的URL地址中前缀不是70.40.213.183
RewriteCond %{HTTP_HOST} !^$ #声明Client请求的主机中前缀不为空
RewriteRule ^(.*) http://www.aaa.cn/ [L] #含义是如果Client请求的主机中的前缀符合上述条件,则直接进行跳转到http://aaacn/,[L]意味着立即停止重写操作,并 不再应用其他重写规则。这里的.*是指匹配所有URL中不包含换行字符,()括号的功能是把所有的字符做一个标记,以便于后面的应用.就是引用前面里的 (.*)字符。

 

例二、启用新域名为www.bbb.cn之后。需要将原来的域名ss.aaa.cn, 以及论坛所在地址ss.aaa.cn/bbs/定向到新的域名,以便用户可以找到,并且使原来的论坛 URL 继续有效而不出现 404 未找到。比如原来的http://ss.aaa.cn/bbs/tread-60.html, 让它在新的域名下继续有效,点击后转发到http://bbs.bbb.cn/tread-60.html;而其他网页,如原先的http: //ss.aaa.cn/purchase不会跳转到二级域名bbs.bbb.cn/purchase上,而是到 www.bbb.cn/purchase。

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/bbs/
RewriteRule ^bbs/(.*) http://bbs.aaa.cn/$1 [R=permanent,L]
RewriteCond %{REQUEST_URI} !^/bbs/
RewriteRule ^(.*) http://www.bbb.cn/$1 [R=permanent,L]

 

例三、同时达到下面两个要求:
1.用http://www.zzz.com/xxx.php 来访问 http://www.zzz.com/xxx/
2.用http://yyy.zzz.com 来访问 http://www.zzz.com/user.php?username=yyy 的功能

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.zzz.com
RewriteCond %{REQUEST_URI} !^user.php$
RewriteCond %{REQUEST_URI} .php$
RewriteRule (.*).php$ http://www.zzz.com/$1/ [R]
RewriteCond %{HTTP_HOST} !^www.zzz.com
RewriteRule ^(.+) %{HTTP_HOST} [C]
RewriteRule ^([^.]+).zzz.com http://www.zzz.com/user.php?username=$1

 

例四、将URL地址 /type.php?typeid=* 跳转至 /type*.html,URL地址 /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]

 

相信通过以上四个简单的例子,我们已经能够写出简单的Apache Rewrite的URL跳转了。

 

 

  • 大小: 179 KB
分享到:
评论

相关推荐

    Apache中使非伪静态url跳转到伪静态url的方法

    ### Apache中使非伪静态URL跳转到伪静态URL的方法 #### 一、背景与目的 在Web开发中,为了提高用户体验以及SEO优化效果,通常会采用伪静态URL(即通过技术手段让动态URL看起来像静态URL)。Apache作为一款广泛使用...

    Apache开启伪静态

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

    网站重写url伪静态工具

    ISAPI_Rewrite,ISAPI_Rewrite用来实现伪静态,将动态网页通过重写URL的方法实现去掉动态网页的参数!它的行为是像Apache的mod_Rewrite ,但专为微软的Internet信息服务( IIS )。 IIS配置相当简单,配置好之后就有...

    UrlReWrite(Url重写或伪静态)

    UrlRewrite是一个强大的URL管理工具,它主要用于将复杂的URL转换为简单、易记且友好的形式,这个过程被称为URL重写或伪静态处理。在Web开发中,URL重写技术对于提升用户体验、优化搜索引擎排名(SEO)以及维护网站...

    Apache伪静态Rewrite详解

    一、Rewrite规则简介:Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块...

    伪静态.txt伪静态.txt

    根据提供的文件信息,本文将详细解释“伪静态”这一概念,并深入探讨如何通过配置实现URL重写技术,以便将动态URL转换为用户友好的静态URL形式。 ### 一、伪静态概念 伪静态(Pseudo Static)是一种网页链接的表现...

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

    本文将详细介绍如何在destoon系统中设置URL Rewrite(伪静态)。 首先,需要了解什么是URL Rewrite(伪静态)。URL Rewrite是服务器端的一项技术,可以将动态URL转换为静态URL。在destoon系统中,伪静态的设置可以...

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

    1.Apache Rewrite的主要功能 就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 2.Apache Rewrite的配置 Apache下的Rewrite配置主要有两种,...

    apache开启伪静态的方法分享

    Rewrite模块是Apache中一个非常强大的工具,用于实现URL重写,从而达到伪静态的效果。下面是一些基本的应用示例。 1. **请求跳转**: - 目标:如果请求的URL后缀为`.php`,则将其重定向到另一个域名对应的`.jsp`...

    javaweb伪静态

    1. URL重写:使用Apache的mod_rewrite模块或Tomcat的URLRewriteFilter,通过配置规则将动态URL转换为静态化的形式。例如,将`/news?id=123`转换为`/news/123.html`。 2. Servlet拦截:创建一个Servlet拦截所有请求...

    nginx 伪静态 重定向

    Nginx的重定向与伪静态配置,通过灵活运用`rewrite`指令及其丰富的标志选项,能够有效应对网站结构调整带来的各种挑战,确保网站的平滑过渡,同时增强SEO表现,是网站运维与开发人员不可或缺的工具。掌握并熟练运用...

    Apache与Tomcat集群,伪静态,负载均衡

    在IT行业中,构建高效、可扩展的Web服务是至关重要的,Apache和Tomcat的集群配置、伪静态处理以及负载均衡正是实现这一目标的关键技术。Apache作为广泛应用的HTTP服务器,能够处理静态内容,而Tomcat则作为Java应用...

    nginx rewrite 实现URL跳转的方法

    Rewrite模块是Nginx提供的一个强大功能,它可以在服务器内部将用户请求的URL按照指定规则进行重写和跳转,达到修改用户访问URL的目的。在配置Nginx时,掌握如何使用Rewrite规则对于实现复杂的URL重写和优化网站的SEO...

    windows中apache 301页面跳转实现方法

    在Windows环境中,Apache服务器的301页面跳转是一种常见的SEO优化策略,用于永久性地重定向一个URL到另一个URL。301重定向对于维护网站的统一性、转移权重以及处理URL规范化问题至关重要。以下是两种主要的实现方法...

    Typecho程序伪静态规则大全(包括Linux/Windows)

    伪静态技术能够将动态页面URL转化为静态页面URL形式,这样做的好处主要包括: - **提高用户体验**:静态化的URL更容易记忆且更美观。 - **SEO优化**:搜索引擎通常更偏好于抓取静态URL,从而有利于提升网站的搜索...

Global site tag (gtag.js) - Google Analytics