前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >.htaccess的重写规则

.htaccess的重写规则

作者头像
Java架构师必看
发布于 2021-03-22 07:18:27
发布于 2021-03-22 07:18:27
2K00
代码可运行
举报
文章被收录于专栏:Java架构师必看Java架构师必看
运行总次数:0
代码可运行

.htaccess基本语法和应用

.htaccess是Apache服务器的一个非常强大的分布式配置文件。 正确的理解和使用.htaccess文件,可以帮助我们优化自己的服务器或者虚拟主机

如何启用htaccess

以windows为例,进入apache/conf目录,找到httpd.conf文件,去掉 LoadModule rewrite_module modules/mod_rewrite.so 前面的#,然后设置目录属性AllowOverride All,重启apache即可

常见格式

下面是一个典型的htaccess文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 开启URL重写
RewriteEngine on
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# URL重写的作用域
RewriteBase /path/to/url
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 满足怎样的条件
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 应用怎样的规则
RewriteRule .? http://www.example.com%{REQUEST_URI} [R=301,L]

来看看RewriteCond,首先有一个%,因为{HTTP_HOST}是一个apache变量,需要用%来指示。从!开始就是匹配的条件,支持 正则。!表示不等于,这句话的意思就是:如果HTTP_HOST不是www.example.com。后面的[NC](no case)表示忽略大小写,常见的还有

  • [L](last):终止一系列的RewriteCond和RewriteRule
  • [R](redirect):触发一个显示的跳转,也可以指定跳转类型,如[R=301]
  • [F](forbidden):禁止查看特定文件,apache会触发403错误

典型应用

图片防盗链

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RewriteCond %{HTTP_REFERER} !^$
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/ [NC]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RewriteRule \.(gif|jpg|png)$ - [F]

由于是基于HTTP_REFERER的验证,所以只能防止一般的图片盗链,因为HTTP_REFERER是比较容易伪造的

自定义404错误页面 如果用户输入了一个不存在的url,那么就显示自定义的错误页面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ErrorDocument 404 /404.html
# 其他同理
ErrorDocument 500 /500.html

处理移动过的文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Redirect 301 /old.html http://yoursite.com/new.html
代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 也可以是下面这样
RewriteRule /old.html http://yoursite.com/new.html [R=301,L]
代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 如果想隐式跳转(URL地址不变,但实际上内容是其他URL),就使用下面的
RewriteRule /old.html http://yoursite.com/new.html [L]

对于RewriteRule还有好多文章可以做,比如

代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 把html后缀的url链接到php文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# $1指代的是前面第1个用括号括起来的内容
RewriteRule ^/?([a-z/]+)\.html$ $1.php [L]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 或者把旧文件夹的内容链接到新文件夹
RewriteRule ^/?old_directory/([a-z/.]+)$ new_directory/$1 [R=301,L]
代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 隐藏文件名
RewriteRule ^/?([a-z]+)$ $1.php [L]

禁止显示目录列表

如果目录里没有index文件,又没有对该目录做过特别的处理,尤其是windows主机,那么该目录里的内容就会显示出来,这时可以在根目录创建 一个.htaccess文件,然后写上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Options -Indexes
# 就这么一句就搞定了

阻止/允许特定IP/IP段

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 禁止所有IP,除了指定的
order deny,allow
deny from all
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 如果想允许IP段,如123.123.123.0 ~ 123.123.123.255,则
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# allow from 123.123.123.
allow from 123.123.123.123
 
ErrorDocument 403 /page.html
 
<Files page.html>
allow from all
</Files>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#如果想禁止特定IP
deny from 123.123.123.123

添加MIME类型

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AddType video/x-flv .flv
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 如果设置类型为 application/octet-stream 将提示下载
AddType application/octet-stream .pdf

本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
礼貌借鉴此文写了实验报告,感觉文章内容挺全的,礼貌借鉴,感谢
礼貌借鉴此文写了实验报告,感觉文章内容挺全的,礼貌借鉴,感谢
回复回复1举报
推荐阅读
数据库课设---酒店管理系统(MySQL、VBNet)
当在客房表中加入一条信息后显示“已占”表示有客户入住,当在客房表中删除一条信息后显示“已退”表示客户离开。
小灵蛇
2024/07/12
9280
数据库课设---酒店管理系统(MySQL、VBNet)
宾馆客房管理系统的设计与实现
用户(用户编号,用户姓名,密码,性别(0-男,1-女),Email地址,通讯地址,联系电话,所在部门,用户类型(1-酒店管理员,2-前台服务员)。
程序员小藕
2020/07/28
1.8K0
基于java的酒店管理系统的设计与实现_java酒店管理系统源码
用户录入开房相关信息、 提交的时候后台会验证数据的数据是否正确、房间是否被占用等情况
全栈程序员站长
2022/11/08
1.5K0
基于java的酒店管理系统的设计与实现_java酒店管理系统源码
基于web的酒店管理系统_新锐酒店管理系统
小型酒店管理系统采用Vue前端框架、SpringBoot框架实现项目前后端分离,并通过Mysql存储数据。本系统实现针对不同用户的登录验证;客户信息、前台管理员以及超级管理员等信息存取;客户信息登记、预约、入住、消费等功能;前台管理员对客户操作的管理;超级管理员对客户以及前台管理员操作进行控制等的功能,系统功能基本实现,测试良好。
全栈程序员站长
2022/11/08
1.5K0
基于web的酒店管理系统_新锐酒店管理系统
分房管理系统Rose模型设计过程
Use Case框图显示系统中的使用案例与角色及其相互关系,角色是与所建系统交互的对象(人或物),使用案例是系统提供的高级功能模块,演示了人们如何使用案例。首先创建主Use Case框图,显示系统的总体视图。
会洗碗的CV工程师
2023/02/26
9060
分房管理系统Rose模型设计过程
_分房管理系统Rose模型设计过程
Use Case框图显示系统中的使用案例与角色及其相互关系,角色是与所建系统交互的对象(人或物),使用案例是系统提供的高级功能模块,演示了人们如何使用案例。首先创建主Use Case框图,显示系统的总体视图。
会洗碗的CV工程师
2023/11/23
3280
_分房管理系统Rose模型设计过程
c++酒店管理系统源代码_c语言酒店管理系统实验报告
现今大多数宾馆所提供的服务样式都各式各样,规模大小也是各有不同,但是归总下来,不可或缺的两类模块还是顾客和工作人员。由于对宾馆行业内部没有很深刻的理解,此次系统设计包括数据库和功能模块都是根据网上收集到的材料和个人认知上,简单模仿和具体实现的。
全栈程序员站长
2022/11/08
1.6K0
c++酒店管理系统源代码_c语言酒店管理系统实验报告
数据库课程设计———–学生选课管理系统的设计「建议收藏」
题目:学生选课管理系统的设计与实现
全栈程序员站长
2022/08/30
12.3K0
数据库课程设计———–学生选课管理系统的设计「建议收藏」
ASP.NET MVC多表示例题-酒店管理
2. 环境要求:Visual Studio 2012 + SQL Server 2012 或以上版本。
红目香薰
2022/11/30
1.2K0
ASP.NET MVC多表示例题-酒店管理
酒店管理系统程序设计[通俗易懂]
随着计算机技术的飞速发展,信息时代的到来,信息改变了我们这个社会。各类行业在日常经营管理各个方面也在悄悄地走向规范化和网络化。市场经济的发展,消费者消费意识的提高,酒店行业的竞争越来越激烈。为了提高办事效率,增加、保证酒店的销售额,树立酒店的良好形象,运用科学的管理方法非常必要。客房管理的信息化程度体现在将计算机及网络与信息技术应用于经营与管理,以现代化工具代替传统手工作业。无疑,使用网络信息化管理使客房管理更先进、更高效、更科学,信息交流更迅速。
全栈程序员站长
2022/09/27
5580
酒店管理系统程序设计[通俗易懂]
中小型酒店管理系统[通俗易懂]
[摘要]计算机网络如果结合使用信息管理系统,能够提高管理员管理的效率,改善服务质量。优秀的中小型酒店管理系统能够更有效管理用户预订酒店业务规范,帮助管理者更加有效管理用户预订酒店,可以帮助提高克服人工管理带来的错误等不利因素。所以一个优秀的中小型酒店管理系统能够带来很大的作用。
全栈程序员站长
2022/11/10
1.1K0
中小型酒店管理系统[通俗易懂]
学生信息管理系统数据库课程设计「建议收藏」
学生信息管理系统是学校管理的重要工具,是学校不可或缺的一部分。随着在校人数的不断增加,教务系统的数量也不断的上涨。学校工作繁杂,资料众多,人工管理信息的难度也越来越大,显然是不能满足实际的需要,效率也是很低的。并且这种传统的方式存在着众多的弊端,如:保密性差.查询不便.效率低,很难维护和更新等,然而,本系统针对以上的缺点能够极大的提高学生信息管理的效率,也是科学化.正规化的管理,与世界接轨的重要条件。所以如何自动高效地管理信息是这些年来许多人所研究的。
全栈程序员站长
2022/08/31
1.4K0
学生信息管理系统数据库课程设计「建议收藏」
数据库课程设计:教务管理系统Swing+MySql
①调查学校教务系统的组织结构,列出各部门之间的互相关系 ·管理者管理学生的相关信息,对其选课,排课,预约教室等事务做出处理; ·管理者管理教师的相关信息,对教师的基本信息修改请求做出处理,对其上课,排课,预约教室等请求做出处理; ·管理者还需要对学校的相关事务负责 ·教师个人的信息和学生的成绩信息信息管理。 ·学生对个人的信息进行管理。
全栈程序员站长
2022/08/30
1.5K0
数据库课程设计:教务管理系统Swing+MySql
数据库课程设计——火车票售票系统「建议收藏」
数据库课程设计的题目,设计了一个火车票售票系统,实现了列车信息查询,车票查询及购买,订单查询,个人信息管理等功能,数据是从12306爬取的真实数据。
全栈程序员站长
2022/08/31
3.1K0
数据库课程设计——火车票售票系统「建议收藏」
数据库课程设计(饭店点餐系统)
通过了解餐饮行业的特点和实际情况,从分析饭店的基本情况入手,结合要实现的功能,对系统的可行性进行分析,为提高其可行性,故做了以下数据分析。
全栈程序员站长
2022/08/26
2.4K0
数据库课程设计(饭店点餐系统)
数据库课程设计——学生宿舍信息管理系统
目录
全栈程序员站长
2022/08/31
5.2K0
学生宿舍管理系统概要设计说明书_学生宿舍管理系统需求分析
学生宿舍管理系统对于一个学校来说是必不可少的组成部分。目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,计算机化管理正是适应时代的产物。信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。我们针对如此,设计了一套学生宿舍管理系统。学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。本系统具有运行速度快、安全性高、稳定性好的优点,并且具备完善的报表生成、修改功能,能够快速的查询学校所需的住宿信息。
全栈程序员站长
2022/09/19
9.9K0
学生宿舍管理系统概要设计说明书_学生宿舍管理系统需求分析
数据库系统及应用实验与课程设计指导(图书管理系统c++课程设计)
声明:由于该项目已是四年前大一时所做,时隔已久,且本人已不从事java相关工作,恕不能解答各位问题!!! 无法提供数据库代码!!!
全栈程序员站长
2022/08/01
6960
数据库系统及应用实验与课程设计指导(图书管理系统c++课程设计)
医院管理数据库课程设计[通俗易懂]
一节复一节,千枝攒万叶。我自不开花,免撩蜂与蝶。 皓首犹贪学,谦虚德益丰。潜神无朕际,悟物不言中。
全栈程序员站长
2022/08/30
1.1K0
医院管理数据库课程设计[通俗易懂]
数据库课程设计
目前社会上信息管理系统发展飞速,越来越多的企业事业单位引入信息管理软件来管理自己日益增长的各种信息。各种网店也采用了不同的管理系统来管理商品信息,取得了很大的成效。网上书店管理系统也在功能上不但完善和加强,为了使书店管理更加规范化,程序化,科学化,我们研发了网上书店管理系统。
全栈程序员站长
2022/07/21
1.3K0
数据库课程设计
推荐阅读
相关推荐
数据库课设---酒店管理系统(MySQL、VBNet)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档