全网最全超详细.htaccess语法讲解
(基础)
一、正则表达式
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。要匹配 ^ 字符本身,请使用 \^。. 换行符以外的所有字符\w 匹配字母或数字或下划线或汉字\s 匹配任意的空白符\d 匹配数字\b 匹配单词的开始或结束* 重复零次或更多次+ 重复一次或更多次? 重复零次或一次{n} 重复n次{n,} 重复n次或更多次{n,m} 重复n到m次() $1 $2 一个括号代表一个分组,第一个括号里匹配的内容就用$1引用,第二个括号匹配的内容用$2引用,以此类推......
二、 htaccess是什么
概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
Unix、Linux系统或者是任何版本的Apache Web服务器都是支持.htaccess的,但是有的主机服务商可能不允许你自定义自己的.htaccess文件。
三、.htaccess都可以做什么?
.htaccess文件可以的事情,主要包括:文件夹密码保护、用户自定义重定向、自定义404页面、扩展名伪静态化、禁止特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,等等。
四、.htaccess语法介绍
RewriteCond (可以理解为if)
语法结构
RewriteCond String Pattern [flags]
RewriteCond指令定义一条规则条件。在一条RewriteRule指令前面可能会有一条或多条RewriteCond指令,只有当RewriteCond的条件(CondPattern)匹配成功时,RewriteRule的重写规则才被应用于当前URL处理。
TestString是一个纯文本的字符串,除了包含普通的字符外,还可以包括下列的变量结构扩展:
RewriteMap扩展:引用方法是:${mapname:key|default} 细节请参见RewriteMap指令 。
TestString可以包含服务器变量 ,引用方法是:%{NAME_OF_VARIABLE}
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
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
IS_SUBREQ
RewriteRule
语法结构
RewriteRule pattern target [Flag1,Flag2,Flag3]
flags
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 | 设置环境变量 |
rewritecond的其他用法:
“-d”(目录)
将TestString视为一个路径名并测试它是否为一个存在的目录。
“-f”(常规文件)
将TestString视为一个路径名并测试它是否为一个存在的常规文件。
“-s”(非空的常规文件)
将TestString视为一个路径名并测试它是否为一个存在的、尺寸大于0的常规文件。
“-l”(符号连接)
将TestString视为一个路径名并测试它是否为一个存在的符号连接。
“-x”(可执行)
将TestString视为一个路径名并测试它是否为一个存在的、具有可执行权限的文件。该权限由操作系统检测。
“-F”(对子请求存在的文件)
检查TestString是否为一个有效的文件,而且可以在服务器当前的访问控制配置下被访问。它使用一个内部子请求来做检查,由于会降低服务器的性能,所以请谨慎使用!
“-U”(对子请求存在的URL)
检查TestString是否为一个有效的URL,而且可以在服务器当前的访问控制配置下被访问。它使用一个内部子请求来做检查,由于会降低服务器的性能,所以请谨慎使用!
常规demo解析
<IfModule mod_rewrite.c>Options +FollowSymlinks -MultiviewsRewriteEngine On //开启RewriteRule ^index.php/(.*)$ https://domain.com/$1 [N,L,R=301] //匹配带有index.php的页面去除index.php并301跳转到 https://domain.com/对应正则匹配的参数 上RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ //如果是 GET /index.php HTTP/1.1RewriteRule ^index\.php$ https://domain.com/ [R=301,L] 完全匹配 index.php 则301跳转到 https://domain.com/ 上RewriteCond %{HTTP_HOST} !^domain.com$ [NC]RewriteRule ^(.*)$ https://domain.com/$1 [L,R=301]RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]</IfModule>
全网最全超详细.htaccess语法讲解相关推荐
- 超全超详细的HTTP状态码大全
超全超详细的HTTP状态码大全 本部分余下的内容会详细地介绍 HTTP 1.1中的状态码.这些状态码被分为五大类: 100-199 用于指定客户端应相应的某些动作. 200-299 用于表示请求成功. ...
- linux命令行开头是sh,shell脚本语言的使用(超全超详细)
1.shell的概述 shell 是一种脚本语言 脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译) shell 既是应用程序 又 ...
- linux中写脚本一般用语言,shell脚本语言的使用(超全超详细)
1.shell的概述 shell 是一种脚本语言 脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译) shell 既是应用程序 又 ...
- ensp启动设备蓝屏_超全超详细的电脑蓝屏问题解决方案汇总
生活太难了!每天搬砖已经够不容易,电脑还作妖: 设计图还差最后一个图层,蓝屏了!!财务工资表格马上统计完,蓝屏了?!熬了一宿马上写完1万字稿件,蓝屏了- 今天,我就带大家轻松搞定蓝屏. 什么是蓝屏 蓝 ...
- spring mvc学习(24):配置maven环境和创建maven项目(建议收藏,超全超详细)
1本次歌谣就对如何创建一个maven项目做一个详细的讲解,毕竟卡了我三天,久久不能入眠,也搜了网上很多的博客 都没有顺利的解决maven项目的创建.这篇建议大家收藏,总会用到的.不然大家看网上的博客也 ...
- 2021年超全超详细的最新大数据开发面试题,附答案解析
版本 时间 描述 V1.0 2020-12-18 创建 V1.2 2021-01-17 新增 spark 面试题 V1.3 2021-01-18 新增 kafka 面试题 V1.4 2021-01-2 ...
- 奥利给!搞定JVM就靠它了!不看感觉错过一个亿!吐血整理两个月,原创!全网第一份超详细JVM知识点导图!!!
一.本人原创整理,基于尚硅谷教学视频以及深入理解Java虚拟机 导图地址请查看评论 二.导图总体如下,每一章节,每一个细节点,都有超级详细的记录.以及一些图示,代码等. 1.总体概图,已经有6.8k浏 ...
- ♂【超全超详细】2W字零基础小白黑客学习路线,知识体系(附学习路线图)♂
前言: 这是外网曾经一篇很火的关于如何成为一个黑客的文章,虽然里面提到的一些技术可能有些过时,但就学习方法和思想上,仍然值得我分享给大家. 关注大师的言行, 跟随大师的举动, 和大师一并修行, 领会大 ...
- Awesome Adb——一份超全超详细的 ADB 用法大全【转】
本文转载自:https://juejin.im/entry/57c00fe4c4c971006179838a ADB,即 Android Debug Bridge,它是 Android 开发/测试人员 ...
最新文章
- c语言中程序偏离,C语言中的指针加减偏移量
- 仿即刻的点赞滚动放大波纹图标
- 利用动态规划求连续数组最大和以及最大子矩阵的和
- 格雷编码Python解法
- 深层剖析鸿蒙轻内核M核的动态内存如何支持多段非连续性内存
- 使用CSE轻松实现接口访问控制
- javascript设计模式 ---序
- colormap保存 matlab_matlab中自定义colormap的保存与调用
- 条款一:尽量使用const、inline而不是#define
- CIKERS Shane 20190603
- paip.软件版本完善计划C426fromVC423
- 庖丁解牛之spring源码系列一
- [渝粤教育] 西南交通大学 工程流体力学 参考 资料
- python 使用 pyodbc 访问 Sql Server
- Web大学生网页作业成品——个人班级网站设计与实现(HTML+CSS)
- 搭建V2P及中青看点教程
- 如何判断选择专业数字功放芯片
- 《文法俱乐部》读书笔记之动词时态--LG二进制
- TDengine RESTful 客户端
- 磁盘清理软件 智能清理Mac
热门文章
- 有没有必要买ipad手写笔?ipad手写笔哪个品牌好
- python 时间等待函数
- 《深入分析JavaWeb技术内幕》之读书笔记(篇一)
- css自适应屏幕教程,WordPress主题css适配屏幕尺寸大小自适应教程
- 元旦插画素材|新年伊始,恭贺崭新2021,旭日东升!
- 提升苹果电脑速度的10个小技巧
- R语言使用rnorm函数生成正态分布随机数、自定义指定生成随机数的个数、均值、方差
- python测验7答案_中国大学MOOC的APP(慕课)2021用Python玩转数据章节测验答案
- 袁老师行书分析7/14
- 支付宝-转账到支付宝账号接口(新接口)