全网最全超详细.htaccess语法讲解

这篇具有很好参考价值的文章主要介绍了全网最全超详细.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 flag
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,而且可以在服务器当前的访问控制配置下被访问。它使用一个内部子请求来做检查,由于会降低服务器的性能,所以请谨慎使用!

全网最全超详细.htaccess语法讲解文章来源地址https://www.toymoban.com/news/detail-443928.html

常规demo解析

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine 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.1

  RewriteRule ^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} !-d
  RewriteCond %{REQUEST_FILENAME} !-f

  RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]


</IfModule>



到了这里,关于全网最全超详细.htaccess语法讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HDFS 短路读的实现(全网最全面深入讲解)

    HDFS短路读是性能优化的一个重要特性,它利用操作系统的内存映射 mmap 、 Domain Socket 和共享内存,避开传统的基于TCP的数据通信,极大提升了数据读取效率。 整个短路读的过程完全放弃传统的基于 TCP/IP 的通信方式,基于 Domain Socket 进行通信,基于 mmap 和内存共享进行数据同

    2024年02月08日
    浏览(59)
  • web自动化之基础内容二(全网最详细,selenium获取断言信息,显示等待和隐式等待,xpath高级语法)-第二天

    获取到的断言信息就是实际结果 预期结果使我们确定的,直接写在代码中的 而实际结果是无法确定的,所以需要用一些方法去获取 代码示例 场景:当我们加载页面的时候,一些元素是需要时间的 就有可能发生,代码执行到了,而元素没有被加载出来 此时就会出现找不到元

    2024年01月17日
    浏览(44)
  • 【全网最全最细】青龙面板搭配Ninja+依赖+Ninja配置的超细讲解教程!!!

    通过Ninja登录京东账号实现京东代挂赚取京东京豆    大家可以加群644288320,进行技术交流。 由于xshell没有finalshell创建文件那么方便,所有要进行以下操作: 注意:把finalshell关了,重新连接一下,把下面全部命令复制粘贴进去即可 然后找到以下文件(如图)

    2023年04月08日
    浏览(47)
  • MySQL安装(全网最全最详细教程)

    目录 1 MySQL的卸载 1.1 停止MySQL服务 1.2 软件的卸载 2 MySQL的下载、安装、配置 2.1 MySQL的4大版本  2.2 软件的下载 2.3 软件的安装 ​2.4 软件的配置 3 多版本mysql同时安装 4 安装过程中可能会出现的问题      有些人希望卸载老版本的MySQL,安装新版本的MySQL,所以在讲如何安装之

    2024年02月09日
    浏览(55)
  • 业余无线电新手入门基础知识(全网最全)

    无线电通信是世界中的一项重要组成部分 一项鼓励人们去从事无线电收信和发信的业余爱好活动 业余无线电爱好者也被称为火腿、HAM 业余无线电叫HAM的由来 远在业余无线电发明之初的1908年,美国哈佛大学有一个业余无线电社团其成员为亚伯特.海曼(Elbert.S.Hyman)、巴伯.兹美

    2024年02月09日
    浏览(55)
  • 【软件测试】Git详细-获取Git仓库,全网最全一篇打通...

    官方提供了两种获取Git仓库的方法。 第一种是在本地现有项目目录下导入所有文件到Git中; 第二种就是从Git仓库中clone项目到本地; 在现有目录中初始化仓库 如果是window的话,进入本地项目目录后,右键即可看到 git-bash ,打开git操作界面,输入命令 然后会看到目录下多了

    2024年02月07日
    浏览(31)
  • 全网最全RabbitMQ笔记 | 万字长文爆肝RabbitMQ基础

    万字长文爆肝黑马程序员2023最新版RabbitMQ教程。笔者认真跟着这个教程,再一次认真学习一遍RabbitMQ教程,温故而知新,对RabbitMQ消息队列也有了更加深入细致的了解。因此笔者做了全网最全面详细的学习笔记,通篇图文并茂,细致入微,由浅入深,循序渐进,深入剖析原理,

    2024年04月14日
    浏览(33)
  • 全网最全,在Linux下安装Git与初始化Git 环境(详细)

    Linux 安装 Git 1、wget方式 下载Git安装包: 直接执行以下命令 解压安装包: 安装编译源码所需依赖: 卸载旧版本Git: 编译: 安装Git: 配置环境变量: 在底部的path变量结尾加上相关配置信息即可 随后保存并更新环境配置 验证: 再来看看git的版本号 到此为止,大功告成了

    2024年02月07日
    浏览(50)
  • golang 正则匹配(更详细易懂 语法+示例)

    package main import (     \\\"fmt\\\"     \\\"regexp\\\" ) func main() {     text := `Hello 世界!123 Go.`     reg := regexp.MustCompile(`[a-z]+`)             // 查找连续的小写字母     fmt.Printf(\\\"%qn\\\", reg.FindAllString(text, -1)) // 输出结果[\\\"ello\\\" \\\"o\\\"]     reg = regexp.MustCompile(`[^a-z]+`)             // 查找连续的非

    2024年02月13日
    浏览(43)
  • 全网最全微服务架构—Spring Cloud详解,没有比这更详细的了!

    软件是有生命的,你做出来的架构决定了这个软件它这一生是坎坷还是幸福。 本文不是讲解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义。 转载自简书作者 原文链接:: https://www.jianshu.com/p/3899d7f47303 一、背景 2008年以后,国内互联网行业飞

    2024年02月12日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包