`
myfreespace
  • 浏览: 228679 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

apache rewrite拟静态

阅读更多

mode-rewrite模块是apache中重要的模块,主要用来实现url跳转和重写,首先要启动该模块

在http.conf文件下去掉该模块前的#号,即可启动了,

他的配置规则是

rewriteEngine on 启动引擎

rewriteCond %{HTTP_HOST}!^www.ifensi.com[NC]正则匹配 ,nc表示不区分大小写

rewriteRule 转换规则^/(.*)http://www.ifensi.com/[l]上面不匹配就跳转到此页面,主要用来防止盗链的,

 

拟静态的配置

RewriteEngine on

RewriteRule ^/test([0-9]*).html/$ /test.php?id=$1表示你静态文字目录,可以是搜索引擎方便的发现更多页面信息,尤其是在新闻列表中,表示的意思是,当在浏览器地址栏中输入 testxx.html的时候,他会自动变为test.php?id=xx这样在浏览器中看,就像是文件是静态的,当然还有你目录与上面道理一样,

 

规则修正符就是用来匹配规则的,F 禁用url就是你无法访问,  G返回401 就是在页面取消的时候,让搜索引擎只搜索一次,

也可以看启用.htaccess 在document_dir 下 修改alloverred all则支持在文件中写规范,这是比较常用的,因为我们不可能总去修改服务器的东西,

 

规范化url 

 

说明:

在有些web服务器上,一个资源会拥有多个URL,在实际应用和发布中应该被使用的是规范的URL,其他的则是简写或者只在内部使用。无论用户在请求中使用什么形式的URL,他最终看见的都应该是规范的URL。

方案:

对所有不规范的URL执行一个外部HTTP重定向,以改变它在浏览器地址栏中的显示及其后继请求。下例中的规则集用规范的/u/user替换/~user,并修正了/u/user所遗漏的后缀斜杠。

RewriteRule   ^/~([^/]+)/?(.*)    /u/$1/$2  [R]
RewriteRule   ^/([uge])/([^/]+)$  /$1/$2/   [R]
在有不同的doucumentroot的情况下可以使用

RewriteEngine on

RewriteRule ^/$ /e/www/ [R]来重定向到不同的目录下,

后缀斜杠的问题

说明:

每个网管对引用目录后缀斜杠的问题都有一本苦经,如果遗漏了,服务器会产生一个错误,因为如果请求是/~quux/foo而不是/~quux/foo/ ,服务器就会去找一个叫foo的文件,而它是一个目录,所以就报错了。事实上,大多数情况下,它自己会试图修正这个错误,但是有时候需要你手工纠正,比如,在重写了许多CGI脚本中的复杂的URL以后。

方案:

解决这个微妙问题的方案是让服务器自动添加后缀斜杠。对此,必须使用一个外部重定向,使浏览器正确地处理后继的对诸如图片的请求。如果仅仅作一个内部重写,可能只对目录页面有效,而对内嵌有使用相对URL的图片的页面无效,因为浏览器有请求内嵌目标的可能。比如,如果不用外部重定向,/~quux/foo/index.html页面中对image.gif的请求,其结果将是/~quux/image.gif

所以,应该这样写:

RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^foo$  foo/  [R]

虚拟用户主机

说明:

如果需要为用户username支持一个www.username.host.domain.com的主页,但不是用在此机器上建虚拟主机的方法,而是用仅在此机器上增加一个DNS记录的方法实现。

方案:

对HTTP/1.0的请求,这是无法实现的;但是对HTTP/1.1的在HTTP头中包含有主机名的请求,可以用以下规则集来内部地重写http://www.username.host.com/anypath为/home/username/anypath

RewriteEngine on
RewriteCond   %{HTTP_HOST}                 ^www\.[^.]+\.host\.com$
RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
RewriteRule   ^www\.([^.]+)\.host\.com(.*) /home/$1$2

负载的均衡

说明:

如何均衡www.foo.com的负载到www[0-5].foo.com(一共是6个服务器)?

方案:

这个问题有许多可能的解决方案,在此,我们讨论通称为“基于DNS”的方案,和特殊的使用mod_rewrite的方案:

  1. DNS循环(DNS Round-Robin)

    最简单的方法是用BIND的DNS循环特性,只要按惯例设置www[0-9].foo.com的DNS的A(地址)记录,如:

    www0   IN  A       1.2.3.1
    www1   IN  A       1.2.3.2
    www2   IN  A       1.2.3.3
    www3   IN  A       1.2.3.4
    www4   IN  A       1.2.3.5
    www5   IN  A       1.2.3.6
    

    然后,增加以下各项:

    www    IN  CNAME   www0.foo.com.
           IN  CNAME   www1.foo.com.
           IN  CNAME   www2.foo.com.
           IN  CNAME   www3.foo.com.
           IN  CNAME   www4.foo.com.
           IN  CNAME   www5.foo.com.
           IN  CNAME   www6.foo.com.
    

    注意,上述看起来似乎是错误的,但事实上,它的确是BIND中的一个预期的特性,而且也可以这样用。无论如何,现在www.foo.com已经被解析,BIND可以给出www0-www6 ,虽然每次在次序上会有轻微的置换/循环,客户端的请求可以被分散到各个服务器。但这并不是一个优秀的负载均衡方案,因为DNS解析信息可以被网络中其他名称服务器缓冲,而一旦www.foo.com被解析为wwwN.foo.com,则其后继请求都将被送往www.foo.com。但是最终结果是正确的,因为请求的总量的确被分散到各个服务器了

  2. DNS 负载均衡

    一种成熟的基于DNS的负载均衡方法是使用http://www.stanford.edu/~schemers/docs/lbnamed/lbnamed.htmllbnamed程序,它是一个Perl5程序,带有若干辅助工具,实现了真正的基于DNS的负载均衡。

  3. 代理吞吐循环(Proxy Throughput Round-Robin)

    这是一个使用mod_rewrite及其代理吞吐特性的方法。首先,在DNS记录中将www0.foo.com固定为www.foo.com ,如下:

    www    IN  CNAME   www0.foo.com.
    

    其次,将www0.foo.com转换为一个专职代理服务器,即由这个机器把所有到来的URL通过内部代理分散到另外5个服务器(www1-www5)。为此,必须建立一个规则集,对所有URL调用一个负载均衡脚本lb.pl

    RewriteEngine on
    RewriteMap    lb      prg:/path/to/lb.pl
    RewriteRule   ^/(.+)$ ${lb:$1}           [P,L]
    

    以下是lb.pl

    #!/path/to/perl
    ##
    ##  lb.pl -- load balancing script
    ##
    
    $| = 1;
    
    $name   = "www";     # the hostname base
    $first  = 1;         # the first server (not 0 here, because 0 is myself)
    $last   = 5;         # the last server in the round-robin
    $domain = "foo.dom"; # the domainname
    
    $cnt = 0;
    while (<STDIN>) {
        $cnt = (($cnt+1) % ($last+1-$first));
        $server = sprintf("%s%d.%s", $name, $cnt+$first, $domain);
        print "http://$server/$_";
    }
    
    ##EOF##
    
    最后的说明:这样有用吗?www0.foo.com似乎也会超载呀?答案是:没错,它的确会超载,但是它超载的仅仅是简单的代理吞吐请求!所有诸如SSI、CGI、ePerl等等的处理完全是由其他机器完成的,这个才是要点。
  4. 硬件/TCP循环

    还有一个硬件解决方案。Cisco有一个叫LocalDirector的东西,实现了TCP/IP层的负载均衡,事实上,它是一个位于网站集群前端的电路级网关。如果你有足够资金而且的确需要高性能的解决方案,那么可以用这个。

 

0
1
分享到:
评论

相关推荐

    php Rewrite 拟静态

    在探讨“PHP Rewrite拟静态”这一主题时,我们主要聚焦于如何通过Apache服务器的mod_rewrite模块,将动态URL转换为看似静态(即“拟静态”)的URL格式,以提升网站的SEO效果、用户友好度及性能。此过程通常涉及对...

    PHP100视频教程54:Apache.Rewrite.拟静态配置.rar

    Apache的Rewrite模块和拟静态配置是Web开发中不可或缺的技术,它们可以帮助我们实现URL的美化,使网站看起来更加专业,同时也对SEO(搜索引擎优化)有着积极的影响。 Apache是世界上最流行的开源Web服务器软件,而...

    Rewrite 页面静态化组建

    在Apache服务器中,需要开启`mod_rewrite`模块,并在`.htaccess`文件中配置规则。Nginx服务器则需要在服务器配置文件中进行相应的设置。 总结,Rewrite 页面静态化组件是提高网站性能和SEO效果的重要工具。理解并...

    Apache开启伪静态

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

    Rewrite伪静态组件

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

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

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

    Apache的ReWrite的应用

    Apache的Rewrite模块是HTTP服务器Apache中的一个强大功能,它允许服务器根据预定义的规则重写URL,这对于网站优化、动态URL转换为静态URL、隐藏真实路径、实现URL短化等场景非常有用。Rewrite模块基于Perl兼容正则...

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

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

    让Apache支持Rewrite静态页面重写的方法

    Apache 1.x 的用户请检查 conf/httpd.conf 中是否存在如下两段代码: LoadModule rewrite_module libexec/mod_rewrite.so AddModule mod_rewrite.c Apache 2.x 的用户请检查 conf/httpd.conf 中是否存在如下一段...

    Rewrite伪静态

    1. **PHP伪静态**:在PHP环境中,Rewrite规则通常配合.htaccess文件使用,通过`mod_rewrite` Apache模块来实现。在IIS下,可以通过URL Rewrite模块实现相同的效果。 2. **ASP伪静态**:对于ASP应用,IIS URL ...

    iis和apache伪静态对比

    4. **性能影响**:虽然两者都能有效地处理伪静态,但Apache的mod_rewrite可能会对性能造成轻微影响,尤其是在高并发环境下。IIS URL Rewrite Module则通常被认为对性能的影响较小。 5. **兼容性**:Apache由于其...

    Apache伪静态配置

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

    解析 .htaccess 文件 apache rewrite

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

    Nginx和Apache之伪静态设置 (运维珍藏版)

    ### Nginx与Apache伪静态设置详解 #### 一、伪静态的概念与作用 ##### 1.1 伪静态的基本定义 伪静态是指通过URL重写(即rewrite)技术将动态网页(例如 .php、.asp 或 .aspx 等格式)的地址转化为静态网页的形式,...

    apache虚拟目录和伪静态的配置

    要在Apache中启用伪静态,首先需要确保`mod_rewrite`模块已加载,然后在相应配置文件(如`.htaccess`)中添加规则。下面是一个简单的伪静态配置示例,用于处理常见的WordPress permalinks: ```apacheconf ...

    Apache伪静态Rewrite详解

    方法有两种一种是编译apache的时候就直接 安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。二、在Apache配置中启用Rewrite打开配置文件httpd.conf: 代码如下:1....

    asp伪静态化/asp静态化/ASPURL重写/IIS Rewrite/RewriteRule/

    ASP伪静态化、ASP静态化、ASPURL重写、IIS Rewrite和RewriteRule是Web开发中的关键概念,尤其在优化网站性能、提高搜索引擎友好度以及改善用户体验方面扮演着重要角色。下面将详细阐述这些概念及其相关技术。 1. ...

    64位 wi8 iis7 isapi_rewrite 伪静态配置软件亲测可用

    ISAPI_Rewrite是Helicon Tech公司开发的一款用于IIS的URL重写工具,类似于Apache的mod_rewrite模块。它允许开发者通过简单的规则对URL进行重写,实现动态URL到静态URL的转换,有助于提高网站的SEO优化和用户体验。...

    伪静态组件Rewrite

    标题提到的"伪静态组件Rewrite",实际上指的是Apache服务器中的一个模块——mod_rewrite,它是实现伪静态功能的关键工具。 **Rewrite模块详解** mod_rewrite是Apache HTTP Server中的一个URL重写模块,能够根据预...

    让IIS支持Apache .htaccess 伪静态规则

    总之,让IIS支持Apache的.htaccess伪静态规则主要依赖于ISAPI_Rewrite这样的第三方工具。通过配置ISAPI筛选器、创建和转换规则文件,我们可以实现跨平台的URL重写功能,使得基于IIS的网站也能拥有优秀的SEO优化和...

Magicbox
Global site tag (gtag.js) - Google Analytics