rewrite常用的.htaccess规则举例(rewrite伪静态规则大全)_rewriteengine on-程序员宅基地

技术标签: # HTML  

先解析一下典型的.htaccess文件:

# 开启URL重写
RewriteEngine on
# URL重写的作用域
RewriteBase /path/url
# 满足怎样的条件
RewriteCond %{HTTP_HOST} !^www\.oy51\.com$ [NC]
# 应用怎样的规则
RewriteRule .? http://www.oy51.com%{REQUEST_URI} [R=301,L]

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

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

1、主域名指向子目录

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?oy51.com$
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subfolder/$1
RewriteCond %{HTTP_HOST} ^(www.)?oy51.com$
RewriteRule ^(/)?$ subfolder/index.php [L]

 2、规范www

①、全部统一到带www,例如将oy51.com统一到www.oy51.com

ewriteEngine on
RewriteCond %{HTTP_HOST} ^oy51\.com$ [NC]
RewriteRule ^(.*)$ http://www.oy51.com/$1 [L,R=301]

 ②、全部统一到不带www,例如将www.oy51.com统一到oy51.com

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.oy51\.com$ [NC]
RewriteRule ^(.*)$ http://oy51.com/$1 [L,R=301]

3、防止别人域名恶意解析

RewriteEngine On
RewriteCond %{HTTP_HOST} !(^www\.oy51\.com$) [NC]
RewriteRule ^(.*)$ http://www.oy51.com/$1 [L,R=301]

 4、启用Deflate

# 在.htaccess中加入下面代码给指定文件后缀启用Deflate,Apache2.0以上版本支持Deflate。
<IfModule mod_deflate.c>
<FilesMatch "\.(js|css)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>
<FilesMatch "\.(js|css)$"> 
# 指定启用Deflate的文件后缀,增加的后缀用|隔开即可,例如 <FilesMatch "\.(js|css|html|php)$">

 5、设置默认首页及顺序

# 在.htaccess文件中加入以下后缀名(可以根据自身需求进行调整):

DirectoryIndex index.html index.htm index.php index.cgi 

6、禁止显示目录列表

# 如果目录没有默认首页文件,将会列出文件列表,可能造成安全隐患,
# 为避免这种情况发生,可以在.htaccess文档中键入以下命令,用以阻止目录列表的显示:
Options -Indexes 

7、设置目录及文件密码保护

# 给目录设置密码保护,在该目录建立一个.htaccess文件,放入如下内容:
AuthUserFile /opt/guide/www.idcspy.org/.htpasswd
AuthType Basic
AuthName "Member Page"
require valid-user
# 注:AuthUserFile 设置密码文件的路径。

 8、图片防盗链

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?oy51\.com/ [NC]
RewriteRule \.(gif|jpg|png)$ - [F]
# 由于是基于HTTP_REFERER的验证,所以只能防止一般的图片盗链,因为HTTP_REFERER是比较容易伪造的.

 9、自定义404错误页面

# 如果用户输入了一个不存在的url,那么就显示自定义的错误页面
ErrorDocument 404 /404.html
# 其他同理
ErrorDocument 500 /500.html

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq15577969/article/details/90209900

智能推荐

OCP12C题库,62数据库备份与恢复(admin,install and upgrade accelerated, backup and recovery workshop -62)(新增)_lgwr might write redo generated by the insert stat-程序员宅基地

文章浏览阅读1.2k次。01 which two statements are ture about using SQLLoader?关于使用SQLLoader,哪两条语句是正确的A、it can generate unique sequential key values in sppecified columns它可以在指定的列中生成惟一的顺序键值 E、it can load data into multiple tables using thesame load statement 它可以使用相同的load语句将数据._lgwr might write redo generated by the insert statement to the redo log befo

代码已提交 但未push前如何撤回_git 取消未push到远程仓库的代码-程序员宅基地

文章浏览阅读610次,点赞8次,收藏11次。已经在 Git 中提交,但还没有将这些提交推送(push)到远程仓库,可以使用 git reset 命令来撤销最近的提交。这个命令将会撤销最后一次提交,但会保留暂存区和工作区的更改,使得你可以重新提交这些更改或者修改后再提交。_git 取消未push到远程仓库的代码

centos中安装和配置mysql-程序员宅基地

文章浏览阅读130次。直接上干货,1、使用wget命令下载安装包,[root@priseapp1 ~]# wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm2、安装mysql源码[root@priseapp1 ~]# yum localinstall mysql57-community-release-el7-8.n...

经典短文:数据包在linux 2.4网络协议栈中的漫游_protocol independent device support routines.-程序员宅基地

文章浏览阅读2.1k次。 The journey of a packet through the linux 2.4 network stackHarald Welte [email protected]/09/13 14:18:22 This document describes the journey of a network packet inside th_protocol independent device support routines.

ARIMA模型预测后出现一条直线的原因_arima预测出来一条直线-程序员宅基地

文章浏览阅读2.1w次,点赞36次,收藏178次。最近又有朋友来询问为何他的时序数据用ARIMA模型后出现的是一条直线,像下面这样(截取部分数据显示):仔细看,阴影部分是预测后的结果走势,这里是蓝色的直线???是不是很奇怪,为何这里会产生一条直线?起初掌柜也很是困惑,于是向这位朋友拿了全部数据来进行实测也是得到同样的结果。。。后来掌柜搜遍全网后研究一番,原来是这么回事!下面开始进行讲解。首先,使用ARIMA模型进行时序预测为何会出现是一条直线?解答:简单来说是因为你的时序数据中存在“季节周期性”(注:这里的季节性是泛指)特征。所以模型无_arima预测出来一条直线

STM32-驱动程序_veml7700 stm32f驱动程序-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏9次。以STM32F429为例1 USART配置USART2usart.h文件根据硬件设置别名:#ifndef __USART_H#define __USART_H#include "stm32f4xx.h"#include &lt;stdio.h&gt;//配置USART2#define USART2_CLK RCC_APB1Periph_USART2#..._veml7700 stm32f驱动程序

随便推点

计算机毕业设计 jsp毕业生管理系统ssh 毕设-程序员宅基地

文章浏览阅读186次,点赞7次,收藏5次。E-R模型法的构成元素有:实体、属性、联系,E-R模型可以用E-R图来表示,是对用户工作环境中所相关的事物给予提示,对实体特性的描述就是属性。数据库概念模型是为了将现实世界中信息进行抽象而设计的,从而实现信息世界的建模,因此,概念模型是进行数据库设计的重要工具。在概念模式的设计中,E-R模型法是最常见的设计方法。设计概念就是在数据分析的基础上自下而上的对整个系统的数据库概念结构进行设计。数据库的设计一般要可以分为个步骤:分别是分析需求、设计概念、设计逻辑、设计物理。图3-1系统功能模块图。

Java基础-面向对象_面向对象 java-程序员宅基地

文章浏览阅读158次。类(Class)和对象(Object)是面向对象的核心概念。类是对一类事物的描述,是抽象的、概念上的定义对象是实际存在的该类事物的每个个体,因而也称为实例(instance)。可以理解为:类 = 抽象概念的人;对象 = 实实在在的某个人面向对象程序设计的重点是类的设计类的设计,其实就是类的成员的设计。_面向对象 java

h5面试题总结-程序员宅基地

文章浏览阅读4.1k次,点赞3次,收藏43次。导航的解析流程1.导航被触发。2.在失活的组件里调用beforeRouteLeave守卫3.调用全局的 beforeEach 守卫4.在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+)5.在路由配置里调用 beforeEnter6.解析异步路由组件7.在被激活的组件里调用 beforeRouteEnter8.调用全局的 beforeResolve 守卫 (2.5+)9.导航被确认10.调用全局的 afterEach 钩子11.触发 DOM 更新12.调用bef_h5面试题

【转载】Tensorflow[源码安装时bazel行为解析]_bazel使用的是gcc还是nvcc-程序员宅基地

文章浏览阅读390次。【转载】Tensorflow[源码安装时bazel行为解析]https://www.cnblogs.com/shouhuxianjian/p/9416934.html0. 引言通过源码方式安装,并进行一定程度的解读,有助于理解tensorflow源码,本文主要基于tensorflow v1.8源码,并借鉴于如何阅读TensorFlow源码.首先,自然是需要去bazel官网了解下必备知识,如(1)什么是bazel; (2)bazel如何对cpp项目进行构建的; (3)bazel构建时候的函数大_bazel使用的是gcc还是nvcc

《所长林超跨学科通识课》模型 整理&笔记&导图_所长林超跨学科百度网盘-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏10次。思维&模式 工具箱_所长林超跨学科百度网盘

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version_you have an error in your sql syntax; check the ma-程序员宅基地

文章浏览阅读1.1k次。查看与您的MySQL服务器版本对应的手册,了解在第1行使用的“-boot-344字符集utf8mb4”附近的正确语法。根据错误提示发现时数据库名称命名出现问题了,将原本的数据库名称jeecg-boot-344改为four即可。_you have an error in your sql syntax; check the manual that corresponds to y