SEO 百科

Apache

本页目录

Apache

Apache 指 Apache HTTP Server,是 Apache 软件基金会维护的开源网络服务器,命令行程序名叫 httpd[1]。它最特别的地方在于逐目录配置:规则可以放进站点目录里的 .htaccess 文件,不必改动主配置文件[2]。第三方统计给出的数字是 21.8% 的网站使用 Apache[12]。站长需要认识它,因为这套机制既带来了便利,也带来了性能与安全上的代价。

在服务器软件栈中的位置

Apache 接住浏览器与爬虫发来的请求,静态文件直接返回,动态请求交给 PHP 等运行时处理。官方把它描述成模块化架构,可用模块超过 100 个,多路处理模块(MPM)决定进程与线程怎么分配[1]。

它跑在系统之上,页面内容由运行时产生,数据由数据库提供。可用的平台很宽,官方列出的范围包含 Linux、Windows、macOS 和多数类 Unix 系统[1]。这一点与只跑在 Windows 上的 IIS 正好相反。

与抓取和收录相关的配置

抓取是收录的第一步,百度把收录概括为“从互联网抓取网页、建立索引数据库、将索引库中数据展现给用户”[9]。

伪静态用 mod_rewrite 模块,规则由 RewriteRule 与 RewriteCond 两条指令组成[3]。

压缩有两条路。gzip 由 mod_deflate 模块提供,Brotli 由 mod_brotli 模块提供,后者从 2.4.26 版本开始可用[4]。Google 抓取工具支持 gzip、deflate 与 Brotli 三种编码[7],两个模块都装上,传输体积还能再小一截。官方还给了一条省算力的做法:把静态资源离线压缩好,让服务器直接发送,就不必每次请求都重新压缩一遍[4]。

HTTP/2 由 mod_http2 模块提供,要用 Protocols 指令显式打开,写法是 Protocols h2 http/1.1[5]。官方提醒,打开之后服务器会多出额外的线程与内存开销,访问量大的站点要先评估[5]。官方首页列出的协议特性包含 HTTP/2,没有列出 HTTP/3[1]。

响应时间才是抓取的直接变量。Google 说明,抓取容量上限随站点响应状况升降,响应快时上限升高,变慢或出现服务器错误时上限下降[8]。百度说明,Baiduspider 会根据服务器压力自动调整抓取频次[10]。

# 伪静态:把 /article/123.html 交给 article.php 处理
RewriteEngine On
RewriteRule ^article/([0-9]+)\.html$ article.php?id=$1 [L]

# 文本类响应开启 gzip 与 Brotli 压缩
AddOutputFilterByType DEFLATE text/html text/css application/javascript
AddOutputFilterByType BROTLI_COMPRESS text/html text/css application/javascript

# 开启 HTTP/2,明文连接只留 HTTP/1.1
Protocols h2 http/1.1

逐目录配置的机制与代价

官方对 .htaccess 的定义是,它提供了一种按目录修改配置的方法,不必直接改动主服务器配置文件[2]。规则放在某个文档目录里,对该目录和它下面的所有子目录都生效[2]。

AllowOverride 默认取值为 None,意思是 .htaccess 会被完全忽略,除非为某个目录显式打开[2]。规则写了不生效,第一个要查的就是这个开关。

代价分两块。性能上,打开之后 httpd 会在每一级目录查找 .htaccess;以 /www/htdocs/example 为例,一个文件被请求时要依次查四个位置,即使这些文件并不存在[2]。安全上,等于把改配置的权限交给了目录的使用者[2]。

写法 位置 生效时机
主配置文件 httpd.conf 一类的路径 服务器启动时加载一次
.htaccess 站点目录内 每次请求都要读取

官方给的建议很直接:能改主配置文件,就把配置写在那里,.htaccess 只在拿不到主配置权限时用[2]。

规则的写法在两种位置并不一样。主配置里路径从根开始,.htaccess 里规则相对于当前目录,开头的斜杠要去掉[2]。

# 主配置文件里,路径从根开始
RewriteRule "^/images/(.+)\.jpg" "/images/$1.png"
# .htaccess 里,规则相对于当前目录
RewriteRule "^images/(.+)\.jpg" "images/$1.png"

站点上的现实是,虚拟主机与面板环境基本只给 .htaccess。WordPress 官方推荐的服务器是 Apache 或 Nginx,并在给主机的清单里写明要带 mod_rewrite 模块[6]。

选购与自建的取舍

多数主机商预装的都是 Apache,源码也可以从官方站点下载后自行编译[1]。面板与建站程序的兼容性都不错,这是它用的人多的一个原因。

版本要挑对。官方同时维护 2.4 稳定分支,2.2 分支已经停止支持,不再提供补丁与安全更新[1]。装上停更的版本,新的漏洞等不到修复。

代价主要是性能。模块化与逐目录配置都带来额外开销,站点规模上去之后,官方建议能改主配置就不要用 .htaccess[2]。

常见误用

一种误用是 .htaccess 里的规则完全不生效。官方给的排查办法是,往文件里放一个没有意义的词再刷新页面;如果没有返回 500 错误,说明 AllowOverride 还是 None[2]。

另一种误用是把 .htaccess 当成主力配置方式,站内目录一多,每次请求都要多做几次磁盘查找[2]。

还有一种误用是压缩只压 HTML,不压 CSS 与 JavaScript;或者反过来去压缩图片,白费处理器时间,体积几乎不变。

最后一种是迁移时直接拷走 .htaccess。Nginx 与 IIS 都不读这个文件,规则要按目标服务器的写法重写一遍。

还有一种误用是服务器上的防护把爬虫一起挡住。百度把抓取失败的一种成因写成服务器响应过慢或站点屏蔽了百度spider[11]。

附录

参见

参考资料

官方(境外)

  1. 《Apache HTTP Server》,Apache HTTP Server Project。
  2. 《Apache HTTP Server Tutorial: .htaccess files》,Apache HTTP Server Project。
  3. 《Apache Module mod_rewrite》,Apache HTTP Server Project。
  4. 《Apache Module mod_brotli》,Apache HTTP Server Project。
  5. 《Apache Module mod_http2》,Apache HTTP Server Project。
  6. 《Requirements》,WordPress。
  7. 《Google 抓取工具和抓取器(用户代理)概览》,Google 搜索中心,2025-09-11 更新。
  8. 《面向大型网站所有者的抓取预算管理指南》,Google 搜索中心。

官方(国内)

  1. 《百度搜索的工作原理》,百度搜索资源平台,2023-12-21 更新。
  2. 《平台工具使用手册(抓取频次)》,百度搜索资源平台,2020-08-14 更新。
  3. 《平台工具使用手册(抓取诊断)》,百度搜索资源平台,2020-08-14 更新。

第三方

  1. 《Usage statistics of web servers》,W3Techs,2026-10-07。

外部链接

无。