• Apache 301跳转实用案例小记


    Apache 301跳转实用案例小记

    参考文档:

    Query String
    官方帮助文档:
    http://wiki.apache.org/httpd/RewriteQueryString

    一.通过URL参数进行访问控制
    如果 http://example.com/page?var=val中的var=val包含字符串foo,则禁止访问。
    1.RewriteCond %{QUERY_STRING} foo
    2.RewriteRule ^/page - [F]
     
    二.删除URL参数
    将URL参数直接从URL中删除。
    RewriteRule ^/page /page?
     
    三.增加URL参数
    通过[QSA]标志保留原有URL参数的同时,在后面增加新的URL参数:var=val
    RewriteRule ^/page /page?var=val [QSA]

    QSA|qsappend
    QSA|qsappend 意思: 字符 'QSA' 或者 字符串 'qsappend' 不怎么好表示. 看例子:
    RewriteRule /pages/(.+) /page.php?page=$1 [QSA]
    如果又标志: [QSA] 那么重写后的URL是: /page.php?page=123&one=two
    如果没有[QSA]标志, 那么结果是: /page.php?page=123 

    四.重写某些URL参数
    当URL参数包含字符串val时,将URL:http://example.com/page1?var=val 重写为:http://example.com/page2?var=val
    RewriteCond %{QUERY_STRING} val
    RewriteRule ^/page1 /page2
    注意:在这里如果不修改URL参数则不需要[QSA]标志,原来的URL参数是默认附加的。
     
    五.修改URL参数
    当访问/path时,将字符串val修改为other_val 。
    RewriteCond %{QUERY_STRING} ^(.*)val(.*)$
    RewriteRule /path /path?%1other_val%2
    上面的%1和%2是反向引用,来自之前的RewriteCond中正则表达式的匹配结果

    六.将URL参数转换为路径
    将URL:http://example.com/path?var=val 转换为:http://example.com/path/var/val
    RewriteCond %{QUERY_STRING} ^(w+)=(w+)$
    RewriteRule ^/path /path/%1/%2?
    注意:上面的转换仅用于单一的var=val参数,且其中只能包含字母、数字和下划线。

     
    七.将路径转换为URL参数
    这是上面的转换的反向操作。
    这个例子可以转换有效的任意三级路径的URL: http://example.com/path/var/val 将转换为 http://example.com/path?var=val
    RewriteRule ^/path/([^/]+)/([^/]+) /path?$1=$2

    八.URL参数引用
    示例1:
    RewriteCond %{QUERY_STRING} ^static-(w+)$
    #RewriteRule ^/$ http://example.com/bbs/%1.html? [R=301,L]
    RewriteRule ^/$ /var/www/html/bbs/%1.html? [P,L,NC]
    示例2:
    RewriteCond %{QUERY_STRING} ^(.+)$
    RewriteRule ^/(.*)/(d+)-(d+)/$ /webapp/wcs/stores/servlet/ProductListCmd?%1 [PT,L]
    RewriteRule ^/(.*)/(d+)-(d+)/$ /webapp/wcs/stores/servlet/ProductListCmd?catalogId=10052&orderBy=18&top_category=$3&categoryId=$2&langId=-7&subCategoryClick=$2&storeId=10001 [PT,L]
    示例3:
    只要域名不是foo.com,则全部转到 http://foo.com
    - rewrite:if ( in_header["host"] !~ "^foo.com" &&  path ~ "^(.*)$" ) goto "http://foo.com/$1 [L,QSA,R=301]"

    九.禁止爬虫
    示例
    #Forbiden Robots
    RewriteCond %{HTTP_USER_AGENT} (^$|Baiduspider|360Spider|Sougospider|Googlebot|bingbot|Yahoo! Slurp) [NC]
    RewriteRule ^(.*)$ - [F]
    测试
    模拟百度蜘蛛的抓取:
    curl -I -A 'Baiduspider' stage.sephora.cn
    Apache <wbr>301跳转实用案例小记


    ProxyPass
    ProxyPass /news/ http://example.com/news/
    ProxyPassReverse /news/ http://example.com/news/
  • 相关阅读:
    简单批处理语法结构
    简单批处理常用命令
    简单批处理符号简介
    简单批处理内部命令
    jQuery操作DOM
    jQuery中的事件与动画
    jQuery选择器
    初始面向对象
    初识jQuery
    操作DOM
  • 原文地址:https://www.cnblogs.com/lixuebin/p/10814345.html
Copyright © 2020-2023  润新知