20个有用的Apache '.htaccess'技巧来保护和自定义网站


Apache是世界上最流行的Web服务器之一,数百万个网站使用它向用户提供内容。Apache最强大的功能之一是它能够使用.htaccess文件来自定义和保护网站。.htaccess文件是一个简单的文本文件,可以放置在网站的根目录中,以控制服务器行为的各个方面。在本文中,我们将介绍20个有用的Apache .htaccess技巧,可以帮助您保护和自定义您的网站。

密码保护目录

如果您想用密码保护网站上的某个目录,可以使用以下.htaccess代码:

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/passwords/file
Require valid-user

将/path/to/passwords/file替换为您包含加密密码的文件的路径。您可以使用htpasswd之类的工具生成此文件。当用户尝试访问受保护的目录时,系统会提示他们输入用户名和密码。

按IP地址阻止访问者

如果您想阻止来自某些IP地址或范围的访问者,可以使用以下.htaccess代码:

Order Allow,Deny
Deny from 123.45.67.89

将123.45.67.89替换为您要阻止的IP地址。您还可以使用通配符来阻止一系列IP地址:

Order Allow,Deny
Deny from 123.45.67.89

这将阻止所有以123.45.67.89开头的IP地址。

将访问者重定向到新URL

如果您想将访问者从一个URL重定向到另一个URL,可以使用以下.htaccess代码:

Redirect 301 /old-url.html http://www.example.com/new-url.html

将/old-url.html替换为您要重定向的URL,将http://www.example.com/new-url.html替换为您要重定向到的URL。这将向访问者的浏览器发送永久重定向(HTTP 301)。

强制使用HTTPS

如果您想强制访问者使用HTTPS而不是HTTP,可以使用以下.htaccess代码:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

这将把所有HTTP请求重定向到HTTPS。在启用此功能之前,请确保您的服务器上已安装SSL证书。

阻止目录列表

如果您想阻止Apache在不存在索引文件时列出目录的内容,可以使用以下.htaccess代码:

Options -Indexes

这将向尝试访问目录的任何访问者返回403禁止错误。

设置自定义错误页面

如果您想为各种HTTP错误提供自定义错误页面,可以使用以下.htaccess代码:

ErrorDocument 404 /404.html
ErrorDocument 500 /500.html

将/404.html和/500.html替换为您自定义错误页面的URL。您还可以使用它将访问者重定向到任何HTTP错误代码的自定义错误页面。

使用Gzip压缩文件

如果您想使用Gzip压缩网站文件以减小其大小并加快页面加载时间,可以使用以下.htaccess代码:

<IfModule mod_deflate.c>
   AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>

这将使用Gzip压缩网站上的所有基于文本的文件(HTML、CSS、JavaScript等)。

阻止访问特定文件类型

如果您想阻止访问者访问网站上的某些文件类型(例如.sql或.conf文件),可以使用以下.htaccess代码:

<FilesMatch "\.(sql|conf)$">
   Order allow,deny
   Deny from all
</FilesMatch>

将(sql|conf)替换为您要阻止的文件扩展名的管道分隔列表。这将向尝试访问具有这些扩展名的文件的任何访问者返回403禁止错误。

限制文件上传大小

如果您想限制访问者可以上传到您网站的最大文件大小,可以使用以下.htaccess代码:

php_value upload_max_filesize 10M
php_value post_max_size 10M

将10M替换为您要允许的最大文件大小。这将把文件上传和POST请求限制到该大小。

阻止访问特定用户代理

如果您想阻止某些用户代理(例如网络爬虫或恶意机器人)访问您的网站,可以使用以下.htaccess代码:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} bad-bot [NC]
RewriteRule .* - [F]

将bad-bot替换为您要阻止的用户代理。这将向使用该用户代理的任何访问者返回403禁止错误。

将非www重定向到www

如果您想将访问您网站时没有“www”前缀的访问者重定向到带有前缀的版本,可以使用以下.htaccess代码:

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

将example.com替换为您自己的域名。这将向访问者的浏览器发送永久重定向。

禁用服务器签名

如果您想隐藏HTTP标头中关于服务器的版本号和其他信息,可以使用以下.htaccess代码:

ServerSignature Off

这将阻止Apache在HTTP标头中显示服务器签名信息。

限制对特定HTTP方法的访问

如果您想将对您网站的访问限制为仅某些HTTP方法(例如GET和POST),可以使用以下.htaccess代码:

<LimitExcept GET POST>
   Order Deny,Allow
   Deny from all
</LimitExcept>

这将阻止除GET和POST之外的所有HTTP方法的访问。

阻止访问特定推荐来源

如果您想阻止来自某些推荐来源(例如垃圾邮件网站或恶意域名)对您网站的访问,可以使用以下.htaccess代码:

RewriteEngine on
RewriteCond %{HTTP_REFERER} spammydomain\.com [NC]
RewriteRule .* - [F]

将spammydomain.com替换为您要阻止的域名。这将向来自该域名的任何访问者返回403禁止错误。

为特定文件扩展名设置MIME类型

如果您想为网站上的某些文件扩展名设置特定的MIME类型,可以使用以下.htaccess代码:

AddType text/html .html
AddType application/json .json

将.html和.json替换为您要设置MIME类型的文件扩展名。这将确保为这些文件类型在HTTP标头中发送正确的MIME类型。

禁用盗链

如果您想阻止其他网站直接链接到您网站上的图像或其他媒体(也称为“盗链”),可以使用以下.htaccess代码:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/.*$ [NC]
RewriteRule \.(gif|jpg|jpeg|bmp|png)$ - [F]

将example.com替换为您自己的域名,并将(gif|jpg|jpeg|bmp|png)替换为您要保护的文件扩展名的管道分隔列表。这将向尝试盗链您网站上图像或其他媒体的任何访问者返回403禁止错误。

自定义错误页面

如果您想自定义Apache显示的默认错误页面(例如404未找到或500内部服务器错误),可以使用以下.htaccess代码:

ErrorDocument 404 /404.html
ErrorDocument 500 /500.html

将404.html和500.html替换为您自己的错误页面的名称。这将显示您的自定义错误页面而不是默认的Apache错误页面。

重定向到HTTPS

如果您想将访问者重定向到网站的安全HTTPS版本,可以使用以下.htaccess代码:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

这将把所有HTTP请求重定向到HTTPS。

防止目录列表

如果您想阻止访问者查看网站上目录中的文件列表,可以使用以下.htaccess代码:

Options -Indexes

这将向尝试查看目录列表的任何访问者返回403禁止错误。

添加自定义标头

如果您想向网站上的所有请求添加自定义HTTP标头,可以使用以下.htaccess代码:

Header set X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options "nosniff"

将X-Frame-Options、X-XSS-Protection和X-Content-Type-Options替换为您要设置的标头的名称及其相应的值。这将向网站上的所有HTTP响应添加这些标头。

结论

总之,.htaccess文件是一个强大的工具,可以用来以多种方式保护和自定义您的网站。通过本文讨论的20个技巧,您可以阻止恶意流量、优化网站以供搜索引擎使用,并增强用户体验。但是,在更改.htaccess文件时务必谨慎,因为一个错误可能会导致错误,甚至可能导致您的网站停止运行。在进行任何更改之前,始终备份您的.htaccess文件,并在实施任何新代码后彻底测试您的网站。

更新于: 2023年3月28日

1K+ 阅读量

开启您的职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.