热门标签 | 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版本,包括多版本切换技巧、稳定性分析及针对WordPress等特定平台的版本建议。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 本文将详细探讨PHP中C的作用,并对比其他编程语言如Java和C的特点及其适用场景。 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • Windows环境下Oracle数据库迁移实践
    本文详细记录了一次在Windows操作系统下将Oracle数据库的控制文件、数据文件及在线日志文件迁移至外部存储的过程,旨在为后续的集群环境部署做好准备。 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • PHP中Smarty模板引擎自定义函数详解
    本文详细介绍了如何在PHP的Smarty模板引擎中自定义函数,并通过具体示例演示了这些函数的使用方法和应用场景。适合PHP后端开发者学习。 ... [详细]
  • 笔记说明重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系& ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • 2019-2020学年 20174325 叶竞蔚 《网络对抗技术》实验六:Metasploit基础应用
    本实验旨在掌握Metasploit框架的基本应用方法,重点学习三种常见的攻击方式及其实施思路。实验内容包括一次主动攻击(如MS08-067)、一次针对浏览器的攻击(如MS11-050)以及一次针对客户端的攻击(如Adobe漏洞利用)。此外,还包括成功应用一个辅助模块。 ... [详细]
  • 近年来,区块链技术备受关注,其中比特币(Bitcoin)功不可没。尽管数字货币的概念早在上个世纪就被提出,但直到比特币的诞生,这一概念才真正落地生根。本文将详细探讨比特币、以太坊和超级账本(Hyperledger)的核心技术和应用场景。 ... [详细]
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社区 版权所有