apache rewrite规则实现白名单

需求:

      六个文件的入口,其他都重定向到index

自己的思路:

      正则找出不是六个文件的URL的模式,进行过滤。

对比同事的结果,自己思路的问题:

      1. 想找出所有不符合规则的,越想越多,无法下手。----------------   思路错误,应该 制定白名单,

      2. 概念错误, 弄错 REQUEST_URI 和 REQUEST_STRING 的概念   基础知识不牢固。

最后结果:


代码如下:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^/(.*) /index.asp$1 [L]
RewriteCond %{REQUEST_URI} ^/index.asp [NC,OR]
RewriteCond %{REQUEST_URI} ^/o.asp [NC,OR]
RewriteCond %{REQUEST_URI} ^/s.asp [NC,OR]
RewriteCond %{REQUEST_URI} ^/error.asp [NC,OR]
RewriteCond %{REQUEST_URI} ^/favicon.ico [NC,OR]
RewriteCond %{REQUEST_URI} ^/status.taobao [NC,OR]
RewriteCond %{REQUEST_URI} ^/app/thirdparty/webbox.asp [NC,OR]
RewriteCond %{REQUEST_URI} ^/static/ [NC]
RewriteRule ^.* - [L]
RewriteCond %{REQUEST_URI} !^/index.asp$
RewriteRule ^.* – [F,L]
</IfModule>

(0)

相关推荐

  • 用ISAPI_Rewrite让IIS也支持如Apache下.htaccess的URL重写

    前些日子用Linux做服务器写了一些东西,发现Apache下的.htaccess真是个好东西!不仅能实现URL真重写,还能实现假重写.真重写可以有效降低代码量与服务器资源消耗量,伪重写可以有效减少服务器的静态文件体积,节约了空间,真是不错!其实htaccess的功能远不只如此. 言归正传,那么IIS下能不能也实现htaccess这样激动人心的功能呢?ASP.NET2.0这个东东不是服务器级的,不能胜任重写这个重任,那么只有交给ISAPI了,在网上搜索,还居然真有公司(组织)开发了这种东东!不可思

  • 基于php伪静态的实现详细介绍

    1.根据$_SERVER['PATH_INFO']来操作实现.   举个列子比如你的网站的地址是 http://127.0.0.1/show_new.php/look-id-1.shtml你echo $_SERVER['PATH_INFO'] 出来的结果就会是 /look-id-1.shtml 看到这个我想大家可能已经明白了.完整的demoindex.php 复制代码 代码如下: index.php $conn=mysql_connect("localhost","root&

  • PHP伪静态页面函数附使用方法

    function MakeUrl($arr){            foreach($arr as $key=>$value){                    $url[]=$key."_".$value;                    }            $tmpurl=implode("_",$url);            return $tmpurl.".htm";            }  functi

  • PHP伪静态Rewrite设置之APACHE篇

    一.Apache配置:   1.支持httpd.conf 配置 2.支持目录 .htaccess配置(一种"分布式配置"文件针对虚拟空间,空间商不让修改Apache配置文件)   启用Rewrite(httpd.conf) (有时候Options Indexes FollowSymLinks会出问题,只需要配置Options all即可) LoadModule rewrite_module modules/mod_rewrite.so 启用.htaccess AllowOverride

  • 13个实用的Apache Rewrite重写规则

    1.去掉域名中的www标记 复制代码 代码如下: RewriteCond %{HTTP_HOST} !^jb51\.net$ [NC]RewriteRule .? http://jb51.net%{REQUEST_URI} [R=301,L] 2.去掉www标记,但是保存子域名 复制代码 代码如下: RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?jb51\.net)$ [NC]RewriteRule .? http://%1%{REQUEST_UR

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

    1.Apache Rewrite的主要功能 就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 2.Apache Rewrite的配置 Apache下的Rewrite配置主要有两种,一种是针对整个apache服务器的配置,此种配置的Rewrite规则是直接在httpd.conf下书写.配置步骤如下: (1)去除httpd.conf文件中"#LoadModule rewrite_module modules/mod_rewri

  • PHP伪静态写法附代码

    比如这个网页 http://www.jb51.net/soft.php/1,100,8630.html 其实处理的脚本是soft.php 参数为1,100,8630 相当于soft.php?a=1&b=1=100&c=8630 只不过这样的URL太难记.搜索引擎也不喜欢. 真静态只是完全生成了HTML. 客户端访问的时候直接输出.不用脚本解释.在流量非常大的时候(比如每天有上百万的访问量的时候)会起到很好的效果.也就是说服务器端实实在在的存在这个HTML页面. 当然在你网站的流量没有那么大

  • apache的rewrite规则使用说明

    rewrite标志R[=code](force redirect) 强制外部重定向 强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码.F(force URL to be forbidden)禁用URL,返回403HTTP状态码.G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码.P(force proxy) 强制使用代理转发.L(last rule)

  • php伪静态之APACHE篇

    1.检测Apache是否支持mod_rewrite通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到"Loaded Modules",其中列出了所有apache2handler已经开启的模块,如果里面包括"mod_rewrite",则已经支持,不再需要继续设置. 如果没有开启"mod_rewrite",则打开目录 您的apache安装目录"/apache/conf/" 下的 httpd.conf 文件,

  • apache rewrite规则实现白名单

    需求: 六个文件的入口,其他都重定向到index 自己的思路: 正则找出不是六个文件的URL的模式,进行过滤. 对比同事的结果,自己思路的问题: 1. 想找出所有不符合规则的,越想越多,无法下手.----------------   思路错误,应该 制定白名单, 2. 概念错误, 弄错 REQUEST_URI 和 REQUEST_STRING 的概念   基础知识不牢固. 最后结果: 复制代码 代码如下: <IfModule mod_rewrite.c> RewriteEngine on Re

  • 对nginx-naxsi白名单规则详解

    白名单规则语法: BasicRule wl:ID [negative] [mz:[$URL:target_url]|[match_zone]|[$ARGS_VAR:varname]|[$BODY_VARS:varname]|[$HEADERS_VAR:varname]|[NAME]] wl:ID (White List ID) 哪些拦截规则会进入白名单 wl:0 把所有拦截规则加入白名单 wl:42 把ID为42的拦截规则加入白名单 wl:42,41,43 把ID为42, 41和43的拦截规则加

  • Apache Rewrite实现URL的301跳转和域名跳转

    如果要想用到rewrite模块,必须先安装或加载rewrite模块.方法有两种一种是编译apache的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块. 基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下直接利用RewriteEngine on来打开rewrite功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意

  • .htaccess rewrite 规则详细说明

    国内的虚拟机一般不提供.htaccess功能(据我所知,discuz的主机好像提供此功能),而在国外主机中,.htaccess功能似乎是标配,笔者的Blog架在MT上,支持.htaccess,每次看到一堆别人写好了的.htaccess设置,很多命令都不甚了了,查看.修改起来很不方便,痛定思痛,潜心学习一下,知其所以然嘛- 学习前提:(不会的朋友要学习一下,才能更好的理解下面的文字呢) Linux基础(不会也没事啦,写个.htaccess没必要大费周折啦,推荐:鸟哥私房菜linux基础) 正则表达

  • Linux下设置防火墙白名单(RHEL 6和CentOS 7)的步骤

    进入Linux 命令行,编辑防火墙规则配置文件 iptables vi /etc/sysconfig/iptables 下面是一个白名单设置的例子: # Firewall configuration written by system-config-securitylevel # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTP

  • Nginx Rewrite规则与使用介绍和技巧实例

    一.正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 二.文件及目录匹配,其中: * -f和!-f用来判断是否存在文件 * -d和!-d用来判断是否存在目录 * -e和!-e用来判断是否存在文件或目录 * -x和!-x用来判断文件是否可执行 三.rewrite指令的最后一项参数为flag标记,flag标记有: 1.last 相当于apache里面的[L]标记,表示rewrite. 2.break本条规则匹配

  • centOS7 下利用iptables配置IP地址白名单的方法

    编辑iptables配置文件,将文件内容更改为如下,则具备了ip地址白名单功能 #vim /etc/sysconfig/iptables *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -N whitelist -A whitelist -s 1.2.3.0/24 -j ACCEPT -A whitelist -s 4.5.6.7 -j ACCEPT -A INPUT -m state --state

  • 详解nginx配置location总结及rewrite规则写法

    location正则写法 一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 # 但是正则和最长字符串会优先匹配 [ configuration B ] } location /documents/ { # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索 # 只有后面的正则表达式没有匹配到时,这

随机推荐