博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
apache rewrite 参数和例子
阅读量:5766 次
发布时间:2019-06-18

本文共 4596 字,大约阅读时间需要 15 分钟。

apache rewrite 参数和例子

‍1.Apache mod_rewrite重写规则的标志

1) R[=code](force redirect) 重定向到外部的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) 传递给下一个处理 例如:RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理Alias /def /ghi 14)S=num(skip next rule(s)) 跳过num条规则 15)E=VAR:VAL(set environment variable) 设置环境变量

2.服务器变量

HTTP headers: connection & request:

HTTP_USER_AGENTHTTP_REFERERHTTP_COOKIEHTTP_FORWARDEDHTTP_HOSTHTTP_PROXY_CONNECTIONHTTP_ACCEPTREMOTE_ADDRREMOTE_HOSTREMOTE_USERREMOTE_IDENTREQUEST_METHODSCRIPT_FILENAMEPATH_INFOQUERY_STRINGAUTH_TYPE

server internals: system stuff: specials:

DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME
API_VERSION
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
IS_SUBREQ
3.举例说明

例一.把client请求的主机前缀不是www.owjee.com和70.40.213.183都跳转到主机前缀为http://www.owjee.com,避免相同内容的网页有多个指向的域名如http://owjee.com。

NameVirtualHost 70.40.213.183:80 ServerAdmin  DocumentRoot “/web” ServerName kiya.cn RewriteEngine on                              #打开rewirte功能 RewriteCond %{HTTP_HOST} !^www.owjee.com [NC]   #声明Client请求的主机中前缀不是www.owjee.com,其中 [NC] 的意思是忽略大小写 RewriteCond %{HTTP_HOST} !^70.40.213.183 [NC] #声明Client请求的主机中前缀不是70.40.213.183,其中 [NC] 的意思是忽略大小写 RewriteCond %{HTTP_HOST} !^$                  #声明Client请求的主机中前缀不为空 RewriteRule ^(.*) http://www.owjee.com [L]     #含义是如果Client请求的主机中的前缀符合上述条件,则直接进行跳转到http://www.owjee.com这里的.*是指匹配所有URL中不包含换行字符,()括号的功能是把所有的字符做一个标记,以便于后面的应用.

例二.将输入en.owjee.com的域名时跳转到http://www.owjee.com

RewriteEngine on RewriteCond %{HTTP_HOST} ^en.owjee.com [NC] RewriteRule ^(.*) http://www.owjee.com[L]

例三.新域名为www.sicasoft.com,这时需要将原来的域名ss.kiya.cn, 以及论坛所在地址ss.kiya.cn/bbs/定向到新的域名,以便用户可以找到,并且使原来的论坛URL继续有效而不出现404未找到.

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

例四.同时达到下面两个要求:

1.用http://www.zzz.com/xxx.php 来访问
2.用http://yyy.zzz.com 来访问 的功能

RewriteEngine On RewriteCond %{HTTP_HOST} ^www.zzz.com RewriteCond %{REQUEST_URI} !^user.php$ RewriteCond %{REQUEST_URI} .php$ RewriteRule (.*).php$ http://www.zzz.com/$1/ [R] RewriteCond %{HTTP_HOST} !^www.zzz.com RewriteRule ^(.+) %{HTTP_HOST} [C] RewriteRule ^([^.]+).zzz.com http://www.zzz.com/user.php?username=$1

例五.首先要在DNS服务器上打开域名的泛域名解析(自己做或者找域名服务商做)。比如把 .kiya.us和 .kiya.cn全部解析到了IP地址70.40.213.183上。Apache中关于*.kiya.us的虚拟主机的设定。

ServerAdmin  DocumentRoot /home/www/www.kiya.us ServerName dns.kiya.us ServerAlias dns.kiya.us kiya.us *.kiya.us CustomLog /var/log/httpd/osa/access_log.log” common ErrorLog /var/log/httpd/osa/error_log.log” AllowOverride None Order deny,allow #AddDefaultCharset GB2312 RewriteEngine on RewriteCond %{HTTP_HOST} ^[^.]+.kiya.(cn|us)$ RewriteRule ^(.+) %{HTTP_HOST}$1 [C] RewriteRule ^([^.]+).kiya.(cn|us)(.*)$ /home/www/www.kiya.us/sylvan$3?un=$1&%{QUERY_STRING} [L]

例六.Rewrite防盗链正则,不允许这两个网站盗链,其它的网站都可以盗链的规则怎么写.

RewriteEngine On RewriteCond %{HTTP_REFERER} chinaz.com [NC] RewriteCond %{HTTP_REFERER} im286.com [NC] RewriteRule .*\.(jpg|jpeg|gif|png|rar|zip|txt|ace|torrent|gz|swf)$ http://www.xxx.com/fuck.png [R,NC,L]

列七.两个关于判断USER AGENT 例子和自动添加.php扩展名及自动换.html到.php扩展名的例子:

RewriteEngine on RewriteCond %{HTTP_USER_AGENT} ^MSIE [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^Opera [NC] RewriteRule ^.* – [F,L] 这里”-”表示没有替换,浏览器为IE和Opera的访客将被禁止访问。 RewriteEngine On RewriteBase /test RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ([^/]+)$ /test/$1.php #for example: /test/admin => /test/admin.php RewriteRule ([^/]+)\.html$ /test/$1.php [L] #for example: /test/admin.html => /test/admin.php 限制目录只能显示图片 < IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !^.*\.(gif|jpg|jpeg|png|swf)$ RewriteRule .*$ – [F,L] < /IfModule>

例八.关于特定文件扩展名的重写。

重写有某些扩展名的文件: RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L] 如果要排除一些扩展名: RewriteRule !\.(js|ico|gif|jpg|JPG|png|PNG|css|pdf|swf)$ index.php

转载于:https://blog.51cto.com/10884109/2315751

你可能感兴趣的文章
看懂ios命名,不看不知道一看吓一跳
查看>>
理解及操作环境变量(基于Mac操作)
查看>>
Fedora 14主机名称修改
查看>>
Oracle中的substr方法
查看>>
项目中处理android 6.0权限管理问题
查看>>
MyBatis 实践 -动态SQL/关联查询
查看>>
创建ArcGIS API for JavaScript的第一个示例程序
查看>>
Python tools for Penetration Tester
查看>>
为什么需要锁?(并发控制)
查看>>
jQuery的deferred对象详解
查看>>
android 布局 使用 viewPager 时,如何解决 和 子页面 长按滑动 冲突问题
查看>>
windows XP常见进程(个人总结)
查看>>
Android开发23——样式和主题
查看>>
Windows azure上运行tomcat程序
查看>>
ORACLE 常用脚本(1)
查看>>
Remoting: Server encountered an internal error
查看>>
SSRS 2012 表达式 -- 介绍
查看>>
管理Linux日志文件工具
查看>>
IO Foundation 12 - 下载远程文件到本地
查看>>
Set statistics time 输出 CPU time> elapsed time
查看>>