- 首页 >
- 问答 >
-
智能运维 >
- CentOS下Apache2如何实现高效SEO
CentOS下Apache2如何实现高效SEO
小樊
38
2025-12-27 07:25:30
CentOS下Apache2高效SEO实操清单
一 基础与环境准备
- 启用关键模块:在 /etc/httpd/conf/httpd.conf 或 /etc/httpd/conf.modules.d/*.conf 中确保加载 mod_ssl、mod_headers、mod_deflate、mod_expires、mod_rewrite、mod_http2(若可用)。示例:
- LoadModule ssl_module modules/mod_ssl.so
- LoadModule headers_module modules/mod_headers.so
- LoadModule deflate_module modules/mod_deflate.so
- LoadModule expires_module modules/mod_expires.so
- LoadModule rewrite_module modules/mod_rewrite.so
- LoadModule http2_module modules/mod_http2.so
- 启用 HTTPS 与 HTTP/2:使用 Let’s Encrypt 获取免费证书并自动配置 Apache(Certbot 在 CentOS 7 常见为 python2-certbot-apache,CentOS 8/Stream 可用 python3-certbot-apache)。
- 安装:sudo yum install certbot python2-certbot-apache(或 python3-certbot-apache)
- 获取并安装证书:sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
- 启用 HTTP/2:在 443 虚拟主机中设置
- Listen 443 http2
- Protocols h2 http/1.1
- 重启生效:sudo systemctl restart httpd
- 说明:Debian/Ubuntu 使用 a2enmod 的方式启用模块,路径与命令不同;本文以 CentOS 为主。
二 性能与速度优化
- 启用 Gzip 压缩(mod_deflate):压缩文本、样式、脚本等可显著降低传输体积;对已经压缩的 JPEG/PNG/PDF 等不必再压缩,避免浪费 CPU。
- 推荐配置:
- AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json application/xml
- 可选字体:application/font-woff application/font-woff2 application/vnd.ms-fontobject application/x-font-ttf
- 避免对图片/压缩包再压缩:SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|pdf|zip|gz|bz2)$ no-gzip dont-vary
- 压缩级别:DeflateCompressionLevel 6(1–9,默认通常为6)
- 配置浏览器缓存(mod_expires):为静态资源设置长期缓存,提升回访速度并减少重复抓取。
- 推荐配置:
- ExpiresActive On
- ExpiresByType text/css “access plus 1 year”
- ExpiresByType application/javascript “access plus 1 year”
- ExpiresByType image/jpeg “access plus 1 year”
- ExpiresByType image/png “access plus 1 year”
- ExpiresByType image/gif “access plus 1 year”
- ExpiresByType image/svg+xml “access plus 1 year”
- ExpiresByType font/woff2 “access plus 1 year”
- ExpiresByType text/html “access plus 1 hour”
- 启用 HTTP/2:多路复用与头部压缩可改善首包与并发性能,建议与 HTTPS 同时启用(见上节)。
- 可选 页面级缓存(mod_cache/mod_cache_disk):对可缓存的页面或静态资源启用磁盘缓存,减轻后端压力(按需启用)。
- 示例:
- CacheEnable disk /
- CacheRoot “/var/cache/apache2/mod_cache_disk”
- CacheDirLevels 2
- CacheDirLength 1
- CacheIgnoreHeaders Set-Cookie
- CacheIgnoreNoLastMod On
- CacheDefaultExpire 3600
- 建议:静态资源使用 Cache-Control: public, max-age 与 ETag/Last-Modified 组合;动态内容谨慎设置长缓存。
三 URL与站点结构优化
- 启用 URL 重写(mod_rewrite):构建简洁、可读的 URL,并统一入口(如前端控制器)。
- 通用前端控制器示例:
- RewriteEngine On
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteRule ^(.*)$ /index.php [L]
- 规范化域名与协议:将 非 www 跳转 www(或反之),并使用 HTTPS 301 永久重定向,集中权重与链接资产。
- 将 example.com → www.example.com(放在 :80 VirtualHost 中):
- RewriteEngine On
- RewriteCond %{HTTP_HOST} !^www. [NC]
- RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
- 将 HTTP → HTTPS(放在 :80 VirtualHost 中):
- RewriteEngine On
- RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
- 建议:URL 保持简短、包含关键词、使用连字符分隔;避免 sessionID、无意义参数。
四 安全与可抓取性头信息
- 设置安全响应头,提升安全与可信度(有助于搜索与用户体验):
- Header set X-Content-Type-Options “nosniff”
- Header set X-Frame-Options “SAMEORIGIN”
- Header set X-XSS-Protection “1; mode=block”
- 可选:内容安全策略(CSP),按站点实际策略调整:Header set Content-Security-Policy “default-src ‘self’”
- 隐藏版本信息:生产环境建议隐藏 Apache 版本,降低信息泄露风险。
- 方式一:ServerTokens Prod
- 方式二:Include conf/extra/httpd-default.conf 并在其中设置 ServerTokens Prod
- 防盗链:防止他人网站盗用你的图片、文件、视频等资源,节省带宽并避免影响 SEO 表现。
- 示例(在 VirtualHost 或 .htaccess 中):
- RewriteEngine On
- RewriteCond %{HTTP_REFERER} !^$
- RewriteCond %{HTTP_REFERER} !^https?://(www.)?yourdomain.com [NC]
- RewriteRule .(jpg|jpeg|png|gif|webp)$ - [NC,F,L]
- 站点可抓取性基础:
- 配置 robots.txt(根目录):User-agent: * 与 Allow/Disallow 合理设置
- 自定义 404 页面:ErrorDocument 404 /404.html,内容友好且包含导航链接
五 验证与运维
- 配置语法与模块检查:
- 语法:sudo httpd -t
- 模块:apachectl -t -D DUMP_MODULES | grep -E “deflate|expires|headers|rewrite|http2|ssl”
- 线上验证要点:
- HTTPS 与证书:访问站点确认证书有效、全站 HTTPS
- HTTP/2:Chrome 开发者工具 → Network → Protocol 显示 h2
- 压缩:响应头出现 Content-Encoding: gzip
- 缓存:响应头出现 Cache-Control: max-age= 与 Expires
- 重定向:HTTP 访问自动 301 到 HTTPS,非 www 自动跳转 www
- 日志与监控:
- 实时查看:sudo tail -f /var/log/httpd/access_log 与 /var/log/httpd/error_log
- 建议结合 cron 定期归档与清理日志,避免磁盘占满影响可用性