Apache .htaccess

Posted on Posted in apache
Tips: 本文创建于2015年9月15日,已超过 2 年,内容或图片可能已经失效!

apache启用.htaccess
修改httpd.conf文件

  1. <Directory "/var/www/htdocs">  

里的

  1. AllowOverride None   

改为

  1. AllowOverride All  

1、在 .htaccess 文件中启用 mod_rewrite

  1. Options +FollowSymLinks  

前提
在全局和虚拟机中设置 RewriteEngine on
2、允许或禁止对站点的访问
只允许 IP 192.168.3.1 的访问

  1. Order Allow, Deny  
  2. Deny from All  
  3. Allow from 192.168.3.1  
  4. 或  
  5. Order Allow, Deny  
  6. Allow from 192.168.3.1  

这里的 Order 关键字指定处理 allow 和 deny 访问的顺序。对于上面的 ‘Order’ 语句,首先会处理 Allow 语句,然后是 deny 语句。

只禁止某个 IP 的访问

下面一行的意思是除了 IP 地址 192.168.3.1,允许所有用户访问网站。

  1. Order Allow, Deny  
  2. Deny from 192.168.3.1  
  3. Allow from All  
  4. 或  
  5. Order Deny, Allow  
  6. Deny from 192.168.3.1  

3、为不同错误码生成 Apache 错误文档

  1. ErrorDocument 404 /error-docs/error-404.html  

4、为文件定义不同 MIME 类型

  1. <IfModule mod_mime.c>  
  2.     AddType application/javascript      js  
  3.     AddType application/x-font-ttf      ttf ttc  
  4. </IfModule>  

5、在 Apache 中限制上传和下载的大小

  1. php_value upload_max_filesize 20M  
  2. php_value post_max_size 20M  
  3. php_value max_execution_time 200  
  4. php_value max_input_time 200  

6、让用户不能在你的站点上在线播放 .mp3 和其它文件

  1. AddType application/octet-stream .mp3 .zip   

7、为站点设置目录索引

  1. DirectoryIndex index.html index.php yourpage.php  

8、为文件启用 GZip 压缩以节省网站带宽

  1. <IfModule mod_deflate.c>  
  2.     AddOutputFilterByType DEFLATE text/plain  
  3.     AddOutputFilterByType DEFLATE text/html  
  4.     AddOutputFilterByType DEFLATE text/xml  
  5.     AddOutputFilterByType DEFLATE application/html  
  6.     AddOutputFilterByType DEFLATE application/javascript  
  7.     AddOutputFilterByType DEFLATE application/x-javascript  
  8. </IfModule>  

9、处理文件类型

  1. RemoveHandler cgi-script .php .pl .py  
  2. AddType text/plain .php .pl .py  

这些行告诉服务器只显示而不执行 .pl (perl 脚本)、.php (PHP 文件) 和 .py (Python 文件) 。
10、为 Apache 服务器设置时区

  1. SetEnv TZ India/Kolkata  

11、在站点上启用缓存控制

  1. <FilesMatch "\.(ico|png|jpeg|svg|ttf)$">  
  2.     Header Set Cache-Control "max-age=3600, public"  
  3. </FilesMatch>  
  4. <FilesMatch "\.(js|css)$">  
  5.     Header Set Cache-Control "public"  
  6.     Header Set Expires "Sat, 24 Jan 2015 16:00:00 GMT"  
  7. </FilesMatch>  

上面的行允许缓存 .htaccess 文件所在目录中的页面一小时。
12、防止网站列出目录列表

  1. Options -Indexes  

13、更改默认字符集和语言头

  1. AddDefaultCharset UTF-8  
  2. DefaultLanguage en-US  

14、重定向一个非 www URL 到 www URL

  1. RewriteEngine ON  
  2. RewriteCond %{HTTP_HOST} ^abc\.net$  
  3. RewriteRule (.*) http://www.abc.net/$1 [R=301,L]  

重写 URL 的重定向规则
特殊符号:

  1. 符号              含义  
  2. ^         -     字符串开头  
  3. $         -     字符串结尾  
  4. |         -     或 [a|b] : a 或 b  
  5. [a-z]     -     a 到 z 的任意字母  
  6. +         -     之前字母的一次或多次出现  
  7. *         -     之前字母的零次或多次出现  
  8. ?         -     之前字母的零次或一次出现  

常量和它们的含义:

  1. 常量          含义  
  2. NC          -   区分大小写  
  3. L           -   最后的规则 – 停止处理后面规则  
  4. R           -   临时重定向到新 URL  
  5. R=301       -   永久重定向到新 URL  
  6. F           -   禁止发送 403 头给用户  
  7. P           -   代理 - 获取远程内容代替部分并返回  
  8. G           -   Gone, 不再存在  
  9. S=x         -   跳过后面的 x 条规则  
  10. T=mime-type -   强制指定 MIME 类型  
  11. E=var:value -   设置环境变量 var 的值为 value  
  12. H=handler   -   设置处理器  
  13. PT          -   Pass through - 用于 URL 还有额外的头  
  14. QSA         -   将查询字符串追加到替换 URL   

15、重定向整个站点到 https

  1. RewriteEngine ON  
  2. RewriteCond %{HTTPS} !on  
  3. RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}  

16、一个自定义重写例子
例如,重定向 url ‘http://www.abc.net?p=100&q=20’ 到 ‘http://www.abc.net/10020pq’。

  1. RewriteEngine ON  
  2. RewriteRule ^http://www.abc.net/([0-9]+)([0-9]+)pq$ ^http://www.abc.net?p=$1&q=$2  

17、网站禁用图片盗链

  1. RewriteEngine ON  
  2. RewriteCond %{HTTP_REFERER} !^$  
  3. RewriteCond %{HTTP_REFERERER} !^http://(www\.)?mydomain.com/.*$ [NC]  
  4. RewriteRule \.(gif|jpeg|png)$ - [F].  

18、将用户重定向到维护页面
这些行检查请求 URL 是否包含任何例如以 ‘/admin/’ 开头的管理页面的请求,或任何到 ‘.png, .jpg, .js, .css’ 页面的请求,对于任何这样的请求,用 ‘ErrorDocs/Maintainence_Page.html’ 替换那个页面。

  1. RewriteCond %{REQUEST_URI} !^/admin/ [NC]  
  2. RewriteCond %{REQUEST_URI} !^((.*).css|(.*).js|(.*).png|(.*).jpg)    [NC]  
  3. RewriteRule ^(.*)$ /ErrorDocs/Maintainence_Page.html [NC,L,U,QSA]  

19、映射 IP 地址到域名

  1. # 为了将IP地址 L.M.N.O 映射到域名 www.hellovisit.com  
  2. RewriteCond %{HTTP_HOST} ^L\.M\.N\.O$ [NC]  
  3. RewriteRule ^(.*)$ http://www.hellovisit.com/$1 [L,R=301]  

20、FilesMatch 标签

  1. <FilesMatch "\.(png|jpg)$">  
  2. Order Allow, Deny   
  3. Deny from All  
  4. </FilesMatch>  

类似用于应用条件到单个文件的 标签, 能用于匹配一组文件并对该组文件应用一些条件

转自[25 个有用 Apache ‘.htaccess’ 技巧][1]

[1]: https://linux.cn/article-5731-1.html

» 转载请注明来源:若我若鱼 » Apache .htaccess

Leave a Reply

Your email address will not be published. Required fields are marked *

11 + 16 =