热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ApacheRewrite伪静态与URL跳转配置

本文章来给各位朋友详细介绍ApacheRewrite伪静态配置方法与我们最后跳到的apacheURL跳转配置方法,这里跳转url不是指301,404了,而一种伪静态的正常跳转,很多网站做三级域名时会有到哦。

本文章来给各位朋友详细介绍Apache Rewrite伪静态配置方法与我们最后跳到的apache URL跳转配置方法,这里跳转url不是指301,404了,而一种伪静态的正常跳转,很多网站做三级域名时会有到哦。

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

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

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

  1. RewriteEngine on   
  2. RewriteCond %{HTTP_HOST} ^a.phpfensi.com [NC]   
  3. RewriteRule ^(.*) http://www.phpfensi.com/ [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) 传递给下一个处理,例如:

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

14) S=num(skip next rule(s)) 跳过num条规则 

15) E=VAR:VAL(set environment variable) 设置环境变量

以下直接举例说明:

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

1 RewriteEngine on 

#打开rewirte功能  

2 RewriteCond %{HTTP_HOST} !^www.aaa.cn [NC] 

#声明Client请求的URL地址中前缀不是www.kiya.cn,其中 [NC] 的意思是忽略大小写  

3 RewriteCond %{HTTP_HOST} !^70.40.213.183 [NC] 

#声明Client请求的URL地址中前缀不是70.40.213.183  

4 RewriteCond %{HTTP_HOST} !^$ 

#声明Client请求的主机中前缀不为空  

5 RewriteRule ^(.*) http://www.phpfensi.com/ [L]

#含义是如果Client请求的主机中的前缀符合上述条件,则直接进行跳转到http://phpfensi.com/,[L]意味着立即停止重写操作,并 不再应用其他重写规则.这里的.*是指匹配所有URL中不包含换行字符,()括号的功能是把所有的字符做一个标记,以便于后面的应用.就是引用前面里的 (.*)字符.

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

  1. RewriteEngine On   
  2. RewriteCond %{REQUEST_URI} ^/bbs/   
  3. RewriteRule ^bbs/(.*) http://bbs.phpfensi.com/$1 [R=permanent,L]   
  4. RewriteCond %{REQUEST_URI} !^/bbs/   
  5. RewriteRule ^(.*) http://www.phpfensi.com/$1 [R=permanent,L] 

例三、同时达到下面两个要求:

1.用http://www.phpfensi.com/xxx.php 来访问 http://www.phpfensi.com/xxx/

2.用http://yyy.phpfensi.com 来访问 http://www.phpfensi.com/user.php?username=yyy 的功能

  1. RewriteEngine On   
  2. RewriteCond %{HTTP_HOST} ^www.phpfensi.com   
  3. RewriteCond %{REQUEST_URI} !^user.php$   
  4. RewriteCond %{REQUEST_URI} .php$   
  5. RewriteRule (.*).php$ http://www.phpfensi.com/$1/ [R]   
  6. RewriteCond %{HTTP_HOST} !^www.phpfensi.com   
  7. RewriteRule ^(.+) %{HTTP_HOST} [C]   
  8. RewriteRule ^([^.]+).hzhuti.com http://www.phpfensi.com/user.php?username=$1 

例四、将URL地址 /type.php?typeid=* 跳转至 /type*.html,URL地址 /type.php?typeid=*&page=* 跳转至 /type*page*.html

  1. RewriteRule ^/type([0-9]+).html$ /type.php?typeid=$1 [PT]   
  2. RewriteRule ^/type([0-9]+)page([0-9]+).html$ /type.php?typeid=$1&page=$2 [PT] 

相信通过以上四个简单的例子,我们已经能够写出简单的Apache Rewrite的URL跳转介绍了apache基础的rewrit知识,再发些例子给大家看看吧.

  1. RewriteEngine on 
  2. # 把 yourdomain.com 改为你要绑定的域名. 
  3. RewriteCond %{HTTP_HOST} ^(www.)?mq35.com$ 
  4. # 把 subfolder 改为要绑定的目录. 
  5. RewriteCond %{REQUEST_URI} !^/bbs/ 
  6. # 不要改以下两行. 
  7. RewriteCond %{REQUEST_FILENAME} !-f 
  8. RewriteCond %{REQUEST_FILENAME} !-d 
  9. # 把 subfolder 改为要绑定的目录. 
  10. RewriteRule ^(.*)$ /bbs/$1 
  11. # 把 yourdomain.com 改为你要绑定的域名 
  12. # 把 subfolder 改为要绑定的目录. 
  13. # subfolder/ 后面是首页文件index.php, index.html...... 
  14. RewriteCond %{HTTP_HOST} ^(www.)?mq35.com$ 
  15. RewriteRule ^(/)?$ bbs/index.php [L] 

上面的整套语句是绑定一个子目录,如需绑定多个子目录,你可以重复添加以上的全套语句。


推荐阅读
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • This guide provides a comprehensive step-by-step approach to successfully installing the MongoDB PHP driver on XAMPP for macOS, ensuring a smooth and efficient setup process. ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文详细介绍如何通过修改配置文件来隐藏Apache、Nginx和PHP的版本号,从而增强网站的安全性。我们将提供具体的配置步骤,并解释这些设置的重要性。 ... [详细]
  • 解决FCKeditor应用主题后上传问题及优化配置
    本文介绍了在Freetextbox收费后选择FCKeditor作为替代方案时遇到的上传问题及其解决方案。通过调整配置文件和调试工具,最终解决了上传失败的问题,并对相关配置进行了优化。 ... [详细]
  • C#设计模式学习笔记:观察者模式解析
    本文将探讨观察者模式的基本概念、应用场景及其在C#中的实现方法。通过借鉴《Head First Design Patterns》和维基百科等资源,详细介绍该模式的工作原理,并提供具体代码示例。 ... [详细]
author-avatar
黄镇郁皓伟嘉惟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有