西安做网站_西安网站建设公司_西安网页制作_西安网页设计_西安网站制作设计公司

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 441|回复: 1

.htaccess语法规则学习 [NC][R][F][L]

[复制链接]
发表于 2019-2-26 21:21:25 | 显示全部楼层 |阅读模式
RewriteCond TestString CondPattern [flags]
/*
RewriteCond:
  指令定义了一个规则的条件,即,在一个RewriteRule指令之前有一个或多个RewriteCond指令。
条件之后的重写规则仅在当前URI与pattern匹配并且符合这些条件的时候才会起作用。


RewriteRule Pattern Substitution [Flags]
/*
其中的Pattern就是参数,一般为一些文件的扩展名;
Substitution是用来替换前面用的;
这儿的Flags,参考上面的表格,常用的R表示 redirect(强制重定向),F表示forbidden(禁止访问),L表示last(最后),通常当你希望停止重写操作而立即重定向时,可用它。
*/


防止目录浏览:

Options All -Indexes

404重定向

ErrorDocument 404 /404.html
--------------------------------------------------------------------------------------------------------------------------
开启重写引擎 :RewriteEngine on

设置重写的根目录:RewriteBase /     — 说明 :因为定义了这个文件夹,所以对应的替换就有了一个参照。

匹配所有符合条件的请求:RewriteCond       — 说明:RewriteCond 定义了一系列规则条件,这个指令可以有一条或者多条,只有用户拿来的url符合这些条件之后,我们的.htaccess才开始接待,否则用户就直接自己去访问所需要的目录了。

举个例子,为了能让搜索引擎更多地抓取我们的网页而避免重复抓,我们通常把没有www的域名重定向到www.XXX.com,如下就实现了这个功能:

RewriteEngine On

RewriteCond %{HTTP_HOST}  ^xxx\.com$ [NC]

RewriteRule ^(.*)$  http://www.xxx.com/$1 [R=301,L]

上例便把xxx.com 重定向到www.xxx.com

%{HTTP_HOST} 是指取得用户访问的URL的主域名  然后空格后面是一个正则表达式匹配,意识就是说是否是 xxx.com 。

如果用户访问使用的URL满足所有列出的RewriteCond 提出的条件,那么进行下一步RewriteRule 即开始进行引导,这才开始实现.htaccess文件的重要功能。

同样,前面是正则表达式,用户分析用户的除了主域名nbphp.com之外的URL ,^(.*)$的意思就是所有的内容。 然后空格后面写的是我们引导用户访问的目录,我们带着他走到新的一个域名上。$1 指的是前面括号里匹配url所得到的内容。

--------------------------------------------------------------------------------------------------------------------------

.htaccess中的[NC][R][F][L]几个标记是什么意思

NC: no case,就是说不区分大小写

R:redirect,重定向

F:forbidden,禁止访问

L:last,表示已经是最后一条规则,.htaccess文件解析即将退出


RewriteEngine On

RewriteRule ^beauty/ydjs/office/(\d{6})(\d{2})/(.*)$ /a/$1/$3 [NC,R=301]

NC,R 这几个参数现在就很容易理解了,NC:忽略大小写;R:跳转形式为301


.htaccess语法规则

RewriteEngine On
RewiteBase /
RewriteCond %{HTTP_REFERER} !^http://(.+.)?baidu.com/ [NC]        //如果来源网址不是*.baidu.com
RewriteCond %{HTTP_REFERER} !^$                                   //并且来源网址不是空
RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]     //如果访问的文件后缀是jpeg,jpg,gif,bmp,png的图片,则重定向到一个固定的图片

RewriteEngine On|Off           //RewriteEngine 用于开启或停用rewrite功能。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^localhost$    //如果域名是localhost
RewriteCond %{REQUEST_FILENAME} !-f     //并且访问的文件找不到
RewriteRule ^images/(.+) http://127.0.0.1/test/showimages/$1 [R=302,L]     //则跳转到另一个域名下的另一个目录访问这个图片

二级域名重定向到www.yourdomain.com

rewriteEngine on
rewriteCond %{http_host} ^yourdomain.com [NC]
rewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]



设置目录默认页面

DirectoryIndex about.html

RewriteRule标记        含 义        描 述
R        Redirect        发出一个HTTP重定向
F        Forbidden        禁止对URL地址的存取
G        Gone        标记URL地址不存在
P        Proxy        将URL地址传递给mod_proxy
L        Last        停止处理接下来的规则
N        Next        再次重第一个规则开始处理,但是使用当前重写后的URL地址
C        Chain        将当前的规则和紧随其后的规则链接起来
T        Type        强制执行指明的MIME类
NS        Nosubreq        只在没有任何内部子请求执行时运行本脚本
NC        Nocase        URL地址匹配对大小写不敏感
QSA        Qsappend        在新的URL地址后附加查询字符串部分,而不是替代
PT        Passthrough        将重写后的URL地址传递给另一个Apache模块进行进一步处理
S        Skip        忽略之后的规则
E        Env        设置环境变量

服务器变量NAME_OF_VARIABLE具体数值见下表:
复制代码
HTTP_USER_AGENT                  //主要用于检测访问者系统和浏览器等
HTTP_REFERER                     //从哪个页面链接过来
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST                        //域名
HTTP_PROXY_CONNECTION
HTTP_ACCEPT                     
REMOTE_ADDR
REMOTE_HOST
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE
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                      //这是正在使用的httpd中(服务器和模块之间内部接口)的Apache模块API的版本, 其定义位于include/ap_mmn.h中。此模块版本对应于正在使用的Apache的版本 (比如,在Apache 1.3.14的发行版中,这个值是19990320:10)。 通常,对它感兴趣的是模块的作者。
THE_REQUEST                      //这是由浏览器发送给服务器的完整的HTTP请求行。(比如, “GET /index.html HTTP/1.1″). 它不包含任何浏览器发送的附加头信息。
REQUEST_URI                      //这是在HTTP请求行中所请求的资源。
REQUEST_FILENAME                 //这是与请求相匹配的完整的本地文件系统的文件路径名或描述.
IS_SUBREQ                        //如果正在处理的请求是一个子请求,它包含字符串”true”,否则就是”false”。 模块为了解析URI中的附加文件,有可能会产生子请求
西安网站建设 | 西安做网站 —— 剑锋所指 所向披靡!
回复

使用道具 举报

 楼主| 发表于 2019-2-26 21:21:37 | 显示全部楼层
RewriteCond TestString CondPattern [flags]
/*
1、RewriteCond:
  指令定义了一个规则的条件,即,在一个RewriteRule指令之前有一个或多个RewriteCond指令。
条件之后的重写规则仅在当前URI与pattern匹配并且符合这些条件的时候才会起作用。
2、TestString:
  是一个纯文本的字符串,但是还可以包含下列可扩展的成分:
3、RewriteRule反向引用:
  引用方法是 $N  (0 <= N <= 9) 引用当前(带有若干RewriteCond指令的)RewriteRule中的 与pattern匹配的分组成分(圆括号!)。
4、RewriteCond反向引用:
  引用方法是 %N  (1 <= N <= 9) 引用当前若干RewriteCond条件中最后符合的条件中的分组成分(圆括号!)。
5、RewriteMap 扩展:
 引用方法是 ${mapname:key|default}
6、服务器变量:
  引用方法是 %{ NAME_OF_VARIABLE }  这个是我们最常使用到的功能
7、CondPattern:
  是条件pattern, 即, 一个应用于当前实例TestString的正则表达式, 即, TestString将会被计算然后与CondPattern匹配.
可以在pattern串中使用!字符(惊叹号)来实现匹配的反转。
8、flags 参见下表
*/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|西安网站建设

GMT+8, 2019-3-26 16:24 , Processed in 0.075303 second(s), 17 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表