25 个有用的 Apache ‘.htaccess’ 技巧,保护和自定义网站
网站是我们生活中的重要组成部分。它们是拓展业务、分享知识等多种方式的手段。以前网站仅限于提供静态内容,随着动态客户端和服务器端脚本语言的引入以及现有静态语言(如 html 到 html5)的不断发展,网站可以添加尽可能多的动态内容,剩下的动态内容预计在不久的将来也会陆续推出。
有了网站,就需要一个可以向全球大量受众展示这些网站的设备。提供托管网站手段的服务器可以满足这一需求。这包括一系列服务器,例如:Apache HTTP Server、Joomla和WordPress,它们允许人们托管他们的网站。
想要托管网站的人可以创建自己的本地服务器,也可以联系上述任何一位或任何其他服务器管理员来托管他的网站。但实际问题从这一点开始。网站的性能主要取决于以下因素:
- 网站消耗的带宽。
- 该网站抵御黑客的安全性如何。
- 通过数据库进行数据搜索时的乐观态度
- 在显示导航菜单和提供更多 UI 功能时实现用户友好性。
除此之外,决定服务器托管网站成功与否的各种因素包括:
- 特定网站实现的数据压缩量。
- 能够同时为请求相同或不同网站的多个客户提供服务。
- 保护在网站上输入的机密数据,如:电子邮件、信用卡详细信息等。
- 允许越来越多的选项来增强网站的动态性。
本文讨论服务器提供的一项功能,该功能有助于提高网站性能并保护网站免受恶意机器人、热链接等的侵害,即“ .htaccess ”文件。
什么是 .htaccess?
htaccess(或超文本访问)是为网站所有者提供选项的文件,用于控制服务器环境变量和其他参数以增强其网站的功能。这些文件可以驻留在网站目录树中的任何目录中,并为目录及其中的文件和文件夹提供功能。
这些功能是什么?这些是服务器指令,即指示服务器执行特定任务的行,这些指令仅适用于放置此文件的文件夹内的文件和文件夹。这些文件默认是隐藏的,因为所有操作系统和 Web 服务器都配置为默认忽略它们,但使隐藏文件可见可以让您看到这个非常特殊的文件。可以控制什么类型的参数是后续章节讨论的主题。
注意:如果将.htaccess文件放在/apache/home/www/Gunjit/目录中,那么它将为该目录中的所有文件和文件夹提供指令,但如果该目录包含另一个文件夹,即:/Gunjit/images/,其中又有另一个.htaccess文件,则此文件夹中的指令将覆盖主.htaccess文件(或层次结构中上级文件夹中的文件)提供的指令。
Apache 服务器和 .htaccess 文件
Apache HTTP Server俗称 Apache,以美洲原住民部落 Apache 命名,以纪念其在战争战略方面的卓越技能。它基于 C/C++ 和 XML 构建,是一款基于 NCSA HTTPd 服务器的跨平台 Web 服务器,在万维网的发展和进步中发挥着关键作用。
Apache 最常用于 UNIX,但也适用于各种平台,包括 FreeBSD、Linux、Windows、Mac OS、Novel Netware 等。2009 年,Apache 成为第一个为超过 1 亿个网站提供服务的服务器。
Apache 服务器在www/目录中为每个用户设置一个.htaccess文件。虽然这些文件是隐藏的,但可以根据需要将其显示出来。在www/目录中,有许多文件夹,每个文件夹都属于一个以用户或所有者的名义命名的网站。除此之外,您还可以在每个文件夹中设置一个.htaccess文件,该文件按上述方式配置该文件夹中的文件。
如何在 Apache 服务器上配置 htaccess 文件如下……
Apache 服务器上的配置
可能有两种情况:
在自己的服务器上托管网站
在这种情况下,如果未启用.htaccess文件,您可以通过转到httpd.conf(Apache HTTP Daemon 的默认配置文件)并找到<Directories>部分来启用.htaccess文件。
<Directory "/var/www/htdocs">
找到以下行...
AllowOverride None
并将其更正为。
AllowOverride All
现在,重新启动 Apache,.htaccess就可以工作了。
在不同的托管服务提供商服务器上托管网站
在这种情况下,最好咨询托管管理员,看他们是否允许访问.htaccess文件。
Apache Web 服务器网站的 25 个“.htaccess”技巧
1. 如何在 .htaccess 文件中启用 mod_rewrite
mod_rewrite选项允许您使用重定向,并通过重定向到其他 URL 来隐藏您的真实 URL。该选项非常有用,允许您将冗长的 URL 替换为简短且易于记忆的 URL。
要允许mod_rewrite,只需将以下行添加为.htaccess文件的第一行。
Options +FollowSymLinks
此选项允许您跟踪符号链接,从而在网站上启用mod_rewrite选项。稍后将介绍如何将 URL 替换为简短明了的 URL。
2. 如何允许或拒绝访问网站
htaccess文件可以使用order、allow和denied关键字来允许或拒绝对网站或其所在目录中的文件夹或文件的访问。
仅允许访问 192.168.3.1 IP
Order Allow, Deny Deny from All Allow from 192.168.3.1 OR Order Allow, Deny Allow from 192.168.3.1
此处的Order关键字指定了允许、拒绝访问的处理顺序。对于上面的“ Order ”语句,将首先处理允许语句,然后再处理拒绝语句。
仅拒绝一个 IP 地址的访问
下面几行提供了允许所有用户访问网站的方法,除了 IP 地址为192.168.3.1的用户。
rder Allow, Deny Deny from 192.168.3.1 Allow from All OR Order Deny, Allow Deny from 192.168.3.1
3.针对不同的错误代码生成Apache错误文档。
使用一些简单的代码,我们可以修复错误文档,该文档在用户/客户端请求网站上不可用的页面时由服务器生成的不同错误代码上运行,就像我们大多数人都会在他们的网络浏览器中看到“ 404 页面未找到”页面。' .htaccess '文件指定在出现此类错误情况时要采取的措施。
为此,需要在“ .htaccess ”文件中添加以下几行:
ErrorDocument <error-code> <path-of-document/string-representing-html-file-content>
' ErrorDocument ' 是一个关键字,错误代码可以是401、403、404、500或任何有效的错误表示代码,最后, “ path-of-document ”代表本地机器上的路径(如果您使用自己的本地服务器)或服务器上的路径(如果您使用任何其他的服务器来托管您的网站)。
例子:
ErrorDocument 404 /error-docs/error-404.html
上面这行代码设置了位于error-docs文件夹中的文档“ error-404.html ” ,当客户端对某个页面提出任何无效请求而导致服务器报告 404 错误时,将显示该文档。
rrorDocument 404 "<html><head><title>404 Page not found</title></head><body><p>The page you request is not present. Check the URL you have typed</p></body></html>"
上述表示也是正确的,它放置了代表通常的 html 文件的字符串。
4. 设置/取消设置 Apache 服务器环境变量
在.htaccess文件中,您可以设置或取消设置服务器允许网站托管者修改的全局环境变量。要设置或取消设置环境变量,您需要将以下几行添加到 .htaccess 文件中。
设置环境变量
SetEnv OWNER “Gunjit Khera”
取消设置环境变量
UnsetEnv OWNER
5. 为文件定义不同的 MIME 类型
MIME(多用途互联网多媒体扩展)是浏览器在运行任何网页时默认识别的类型。您可以在.htaccess文件中为您的网站定义 MIME 类型,以便服务器可以识别和运行您定义的不同类型的文件。
<IfModule mod_mime.c> AddType application/javascript js AddType application/x-font-ttf ttf ttc </IfModule>
这里,mod_mime.c是用于控制不同 MIME 类型定义的模块,如果您的系统上安装了此模块,那么您可以使用此模块为网站中使用的不同扩展定义不同的 MIME 类型,以便服务器可以理解它们。
6.如何限制Apache的上传和下载大小
.htaccess文件允许您控制特定客户端从您的网站上传或下载的数据量。为此,您只需将以下几行附加到您的 .htaccess 文件中:
php_value upload_max_filesize 20M php_value post_max_size 20M php_value max_execution_time 200 php_value max_input_time 200
以上几行设置了最大上传大小、发布数据的最大大小、最大执行时间,即允许用户在本地机器上执行网站的最大时间,最大时间限制在输入时间内。