apache启用.htaccess
修改httpd.conf文件
将
- <Directory "/var/www/htdocs">
里的
- AllowOverride None
改为
- AllowOverride All
1、在 .htaccess 文件中启用 mod_rewrite
- Options +FollowSymLinks
前提
在全局和虚拟机中设置 RewriteEngine on
2、允许或禁止对站点的访问
只允许 IP 192.168.3.1 的访问
- Order Allow, Deny
- Deny from All
- Allow from 192.168.3.1
- 或
- Order Allow, Deny
- Allow from 192.168.3.1
这里的 Order 关键字指定处理 allow 和 deny 访问的顺序。对于上面的 ‘Order’ 语句,首先会处理 Allow 语句,然后是 deny 语句。
只禁止某个 IP 的访问
下面一行的意思是除了 IP 地址 192.168.3.1,允许所有用户访问网站。
- Order Allow, Deny
- Deny from 192.168.3.1
- Allow from All
- 或
- Order Deny, Allow
- Deny from 192.168.3.1
3、为不同错误码生成 Apache 错误文档
- ErrorDocument 404 /error-docs/error-404.html
4、为文件定义不同 MIME 类型
- <IfModule mod_mime.c>
- AddType application/javascript js
- AddType application/x-font-ttf ttf ttc
- </IfModule>
5、在 Apache 中限制上传和下载的大小
- php_value upload_max_filesize 20M
- php_value post_max_size 20M
- php_value max_execution_time 200
- php_value max_input_time 200
6、让用户不能在你的站点上在线播放 .mp3 和其它文件
- AddType application/octet-stream .mp3 .zip
7、为站点设置目录索引
- DirectoryIndex index.html index.php yourpage.php
8、为文件启用 GZip 压缩以节省网站带宽
- <IfModule mod_deflate.c>
- AddOutputFilterByType DEFLATE text/plain
- AddOutputFilterByType DEFLATE text/html
- AddOutputFilterByType DEFLATE text/xml
- AddOutputFilterByType DEFLATE application/html
- AddOutputFilterByType DEFLATE application/javascript
- AddOutputFilterByType DEFLATE application/x-javascript
- </IfModule>
9、处理文件类型
- RemoveHandler cgi-script .php .pl .py
- AddType text/plain .php .pl .py
这些行告诉服务器只显示而不执行 .pl (perl 脚本)、.php (PHP 文件) 和 .py (Python 文件) 。
10、为 Apache 服务器设置时区
- SetEnv TZ India/Kolkata
11、在站点上启用缓存控制
- <FilesMatch "\.(ico|png|jpeg|svg|ttf)$">
- Header Set Cache-Control "max-age=3600, public"
- </FilesMatch>
- <FilesMatch "\.(js|css)$">
- Header Set Cache-Control "public"
- Header Set Expires "Sat, 24 Jan 2015 16:00:00 GMT"
- </FilesMatch>
上面的行允许缓存 .htaccess 文件所在目录中的页面一小时。
12、防止网站列出目录列表
- Options -Indexes
13、更改默认字符集和语言头
- AddDefaultCharset UTF-8
- DefaultLanguage en-US
14、重定向一个非 www URL 到 www URL
- RewriteEngine ON
- RewriteCond %{HTTP_HOST} ^abc\.net$
- RewriteRule (.*) http://www.abc.net/$1 [R=301,L]
重写 URL 的重定向规则
特殊符号:
- 符号 含义
- ^ - 字符串开头
- $ - 字符串结尾
- | - 或 [a|b] : a 或 b
- [a-z] - a 到 z 的任意字母
- + - 之前字母的一次或多次出现
- * - 之前字母的零次或多次出现
- ? - 之前字母的零次或一次出现
常量和它们的含义:
- 常量 含义
- NC - 区分大小写
- L - 最后的规则 – 停止处理后面规则
- R - 临时重定向到新 URL
- R=301 - 永久重定向到新 URL
- F - 禁止发送 403 头给用户
- P - 代理 - 获取远程内容代替部分并返回
- G - Gone, 不再存在
- S=x - 跳过后面的 x 条规则
- T=mime-type - 强制指定 MIME 类型
- E=var:value - 设置环境变量 var 的值为 value
- H=handler - 设置处理器
- PT - Pass through - 用于 URL 还有额外的头
- QSA - 将查询字符串追加到替换 URL
15、重定向整个站点到 https
- RewriteEngine ON
- RewriteCond %{HTTPS} !on
- RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
16、一个自定义重写例子
例如,重定向 url ‘http://www.abc.net?p=100&q=20’ 到 ‘http://www.abc.net/10020pq’。
- RewriteEngine ON
- RewriteRule ^http://www.abc.net/([0-9]+)([0-9]+)pq$ ^http://www.abc.net?p=$1&q=$2
17、网站禁用图片盗链
- RewriteEngine ON
- RewriteCond %{HTTP_REFERER} !^$
- RewriteCond %{HTTP_REFERERER} !^http://(www\.)?mydomain.com/.*$ [NC]
- RewriteRule \.(gif|jpeg|png)$ - [F].
18、将用户重定向到维护页面
这些行检查请求 URL 是否包含任何例如以 ‘/admin/’ 开头的管理页面的请求,或任何到 ‘.png, .jpg, .js, .css’ 页面的请求,对于任何这样的请求,用 ‘ErrorDocs/Maintainence_Page.html’ 替换那个页面。
- RewriteCond %{REQUEST_URI} !^/admin/ [NC]
- RewriteCond %{REQUEST_URI} !^((.*).css|(.*).js|(.*).png|(.*).jpg) [NC]
- RewriteRule ^(.*)$ /ErrorDocs/Maintainence_Page.html [NC,L,U,QSA]
19、映射 IP 地址到域名
- # 为了将IP地址 L.M.N.O 映射到域名 www.hellovisit.com
- RewriteCond %{HTTP_HOST} ^L\.M\.N\.O$ [NC]
- RewriteRule ^(.*)$ http://www.hellovisit.com/$1 [L,R=301]
20、FilesMatch 标签
- <FilesMatch "\.(png|jpg)$">
- Order Allow, Deny
- Deny from All
- </FilesMatch>
类似用于应用条件到单个文件的 标签, 能用于匹配一组文件并对该组文件应用一些条件
转自[25 个有用 Apache ‘.htaccess’ 技巧][1]
[1]: https://linux.cn/article-5731-1.html