.htaccess文件使用教程总结

 更新时间:2008年06月18日 19:22:10   投稿:mdxy-dxy  
.htaccess是一个站点管理员可以应用的强大工具,有更多的变化以适应不同的用途,可以节约时间及提高网站的安全性

1. apache中启用.htaccess

修改 /private/etc/apache2/httpd.conf

Options FollowSymLinks
# AllowOverride None
AllowOverride All

# 去掉注释
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

# 可以选择修改使用.htaccess以外的文件名,如.config
AccessFileName .config

2. 时区设置

SetEnv TZ Asia/Shanghai

3. 显示/隐藏目录列表

# 允许显示,两种方式
Options Indexes FollowSymLinks
Options All +Indexes
# 隐藏目录,三种方式
Options FollowSymLinks
Options All -Indexes
Options -Indexes

4. 访问控制

使用Order命令限制用户访问一些关键目录

# 保护 htaccess 文件
<Files .htaccess>
order allow,deny
deny from all
</Files>

# 阻止查看所有文件
<Files *>
order allow,deny
deny from all
</Files>

# 阻止查看指定的文件
<Files logo.png>
order allow,deny
deny from all
</Files>

# 多种文件类型
<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
order allow,deny
deny from all
</FilesMatch>

5. 重定向

Redirect permanent / https://www.jb51.net
Redirect temp /old.html https://www.jb51.net/index.html
order deny,allow

6. URL重写

# 开启URL重写
RewriteEngine On
# 重写规则
RewriteRule ^demo/getnew/([0-9]+)$ index.php/demo/getnew?id=$1
RewriteRule ^demo/(\S+)$ index.php/demo/$1

7. 阻止/允许特定IP

Order allow,deny
Deny from 123.123.123.123
Deny from 123.123.1
Allow from all

8. 自定义错误页

# 基于网站根目录
ErrorDocument 404 /pages/404.html
ErrorDocument 500 /pages/500.html

9. 缺省页

DirectoryIndex index.html index.htm index.php

10. 使用/禁用缓存文件

<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>

11. 压缩文件

压缩 text, html, javascript, css, xml

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

12. 防盗链

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?jb51.net(/)?.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|bmp|png)$ https://www.jb51.net/src/logo.png [R,NC,L]

利用.htaccess实现网站图片防盗链功能

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/images
RewriteRule ^.*$ - [L]
RewriteCond %{REQUEST_FILENAME} \.(jpg|gif|bmp|zip|rar|mp3|txt|png|wma|wmv)$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !www.jb51.net [NC]
RewriteCond %{HTTP_REFERER} !jb51.net [NC]
RewriteCond %{HTTP_REFERER} !www.zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !www.google.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !www.google.com.hk [NC]
RewriteCond %{HTTP_REFERER} !google.com.hk [NC]
RewriteCond %{HTTP_REFERER} !www.google.cn [NC]
RewriteCond %{HTTP_REFERER} !google.cn [NC]
RewriteCond %{HTTP_REFERER} !www.baidu.com [NC]
RewriteCond %{HTTP_REFERER} !www.baidu.cn [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.cn [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
RewriteCond %{HTTP_REFERER} !www.ask.com [NC]
RewriteCond %{HTTP_REFERER} !www.163.com [NC]
RewriteCond %{HTTP_REFERER} !www.yahoo.com [NC]
RewriteCond %{HTTP_REFERER} !www.sogou.com [NC]
RewriteCond %{HTTP_REFERER} !www.soso.com [NC]
RewriteCond %{HTTP_REFERER} !www.sina.com.cn [NC]
RewriteCond %{HTTP_REFERER} !www.msn.com [NC]
RewriteRule (.*) /images/error.gif [R,NC,L]

代码说明:代码第二行,意思是将网站images目录的权限打开,也就是说images文件夹下的图片不进行防盗链,为什么呢?因为我们的盗链警告图片放在这个目录下,你要是不把这个目录权限打开,那么别人盗链的时候,连这张盗链警告图片也显示不出来,只能显示红叉叉,这不是我们想要的效果。代码第四行为需要防盗链文件的后缀名,可以自行根据需要修改。后边那些代码的意思是哪些网站可以不防盗链,都是一些搜索引擎之类的,还有自己站的网址。代码最后一行为盗链时显示的警告图片。也可以将这张图片存放到其他的网站,比如某些图片存储空间,这样的话就可以更加节省本站流量了。

13. 安全相关

RewriteEngine On

# 阻止脚本企图通过URL修改mosConfig值
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
# 阻止脚本通过URL传递的base64_encode垃圾信息
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
# 阻止在URL含有<script>标记的脚本
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
# 阻止企图通过URL设置PHP的GLOBALS变量的脚本
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
# 阻止企图通过URL设置PHP的_REQUEST变量的脚本
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
# 把所有被阻止的请求转向到403禁止提示页面
RewriteRule ^(.*)$ index.php [F,L]
# 禁止某些目录里的脚本执行权限
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI

.htaccess的特别说明

* 启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用
* 如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:

AccessFileName .config 

* 一般情况下,不应该使用. htaccess文件,除非你对主配置文件没有访问权限。有一种很常见的误解,认为用户认证只能通过.htaccess文件实现,其实并不是这样,把用户认证写在主配置文件中是完全可行的,而且是一种很好的方法。.htaccess文件应该被用在内容提供者需要针对特定目录改变服务器的配置而又没有 root权限的情况下。如果服务器管理员不愿意频繁修改配置,则可以允许用户通过.htaccess文件自己修改配置,尤其是ISP在同一个机器上运行了多个用户站点,而又希望用户可以自己改变配置的情况下。虽然如此,一般都应该尽可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置,都可以放在主配置文件的<Directory>段中,而且更高效。避免使用.htaccess文件有两个主要原因,即性能和安全。

附:
在线 .htaccess文件生成器|htaccess编辑器在线编辑器
能够在线生成. htaccess文件,很简单的就配置重定向,系统错误文件,自定义默认编码,错误页面等

相关文章

  • Linux下Tomcat的几种运行方式讲解

    Linux下Tomcat的几种运行方式讲解

    今天小编就为大家分享一篇关于Linux下Tomcat的几种运行方式讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • Linux中Homebrew的正确使用方法

    Linux中Homebrew的正确使用方法

    这篇文章主要给大家介绍了关于Linux中Homebrew的正确使用方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Linux系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • CentOS7 安装 zabbix 4.0 教程(图文详解)

    CentOS7 安装 zabbix 4.0 教程(图文详解)

    这篇文章主要介绍了CentOS7 安装 zabbix 4.0 教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Linux目录结构及其功能的使用解读

    Linux目录结构及其功能的使用解读

    Linux的目录结构包括根目录/、bin、sbin、usr、var、etc、home、boot、lib、mnt、media、tmp、dev、proc、sys、opt和srv等,每个目录都有其特定的用途和存放内容,了解这些目录的作用和内容有助于更好地管理和维护系统
    2025-03-03
  • 自制YUM仓库的步骤讲解

    自制YUM仓库的步骤讲解

    今天小编就为大家分享一篇关于自制YUM仓库的步骤讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Linux Web服务器网站故障分析常用命令

    Linux Web服务器网站故障分析常用命令

    这篇文章主要为大家详细分析了Linux Web服务器网站故障,利用常用命令查看故障,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • linux守护进程服务daemon、nohup、systemd的区别

    linux守护进程服务daemon、nohup、systemd的区别

    守护进程(Daemon)是指在后台运行的进程,不与用户直接交互,且在系统启动时自动运行,nohup是一个命令行实用程序,用于在用户注销后继续运行命令,‌Systemd‌用于管理和启动服务,支持复杂的依赖管理和自动启动
    2025-03-03
  • Linux文件编辑命令vi详细整理(总结)

    Linux文件编辑命令vi详细整理(总结)

    本篇文章主要介绍了Linux文件编辑命令详细整理(总结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • win7中VMware安装CentOs7搭建Linux环境教程

    win7中VMware安装CentOs7搭建Linux环境教程

    这篇文章主要为大家详细介绍了win7中VMware虚拟机安装CentOs7搭建Linux环境教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 使用 bind 设置 DNS 服务器的方法

    使用 bind 设置 DNS 服务器的方法

    Bind9是一个强大的Linux下开放源代码的DNS服务器软件,这篇文章主要介绍了使用 bind 设置 DNS 服务器的方法,需要的朋友可以参考下
    2020-03-03

最新评论