通过 Apache 配置增强 SEO 的实操清单
一 基础安全与 HTTPS
# 强制 HTTPS
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
# 安全头
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header set X-Content-Type-Options "nosniff"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
Header set Referrer-Policy "strict-origin-when-cross-origin"
# 可选:隐藏版本信息
ServerTokens Prod
ServerSignature Off
</VirtualHost>
命令参考:Debian/Ubuntu 使用 sudo a2enmod ssl 与 sudo certbot --apache -d example.com -d www.example.com;CentOS/RHEL 使用 sudo yum install certbot python2-certbot-apache 后执行相同 certbot 命令。
二 性能优化 压缩 缓存 HTTP/2
# Gzip
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json image/svg+xml
</IfModule>
# 缓存策略
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/html "access plus 1 hour"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
</IfModule>
# HTTP/2(在 443 虚拟主机)
Protocols h2 http/1.1
说明:对 HTML 采用较短缓存(如 1 小时)便于内容更新;对 CSS/JS/图片 采用 1 个月 或更长缓存,并通过文件名哈希或查询串实现更新控制。
三 搜索引擎友好 URL 与规范链接
<Directory /var/www/example.com>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 前端控制器(Laravel/Symfony 等常见)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]
# 规范:强制 HTTPS + 非 www
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]
要点:确保目录配置允许 AllowOverride All(或至少 FileInfo)以便 .htaccess 生效;规则应放在 VirtualHost 或目录上下文中,避免与现有规则冲突。
四 站点地图与日志监控
# /robots.txt
User-agent: *
Disallow: /admin/
Sitemap: https://example.com/sitemap.xml
# 健康检查(确保可访问)
# GET /health 返回 200
命令参考:实时查看日志可用 sudo tail -f /var/log/apache2/access.log 或 /var/log/httpd/access_log;结合报警与可视化工具建立长期监控。