通过 Apache 配置优化 SEO 的实操清单
一 核心原则与优先级
二 启用 HTTPS 与 HTTP/2
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /path/to/fullchain.pem
SSLCertificateKeyFile /path/to/privkey.pem
Protocols h2 http/1.1
# ... 其他配置
</VirtualHost>
# 将 HTTP 80 重定向到 HTTPS
<VirtualHost *:80>
ServerName yourdomain.com
Redirect permanent / https://yourdomain.com/
</VirtualHost>
sudo apt update
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
sudo yum install certbot python2-certbot-apache # 或 python3-certbot-apache
sudo certbot --apache
sudo systemctl restart apache2(Debian/Ubuntu)或 sudo systemctl restart httpd(CentOS/RHEL)。三 URL 重写与规范化
# 启用模块
sudo a2enmod rewrite # Debian/Ubuntu
# 或 yum/dnf 安装 mod_rewrite(CentOS/RHEL)
# .htaccess 或 <Directory> 内
RewriteEngine On
RewriteBase /
# 前端控制器(单入口)
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# 示例:将 /product/123 映射到 product.php?id=123
RewriteRule ^product/([0-9]+)/?$ product.php?id=$1 [L]
<link rel="canonical" href="https://...">)。Sitemap: https://yourdomain.com/sitemap.xml。四 性能优化 压缩与缓存
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css \
application/javascript application/json application/xml application/rss+xml \
image/svg+xml image/x-icon font/woff2 font/woff font/ttf
</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"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType font/woff "access plus 1 year"
ExpiresByType font/ttf "access plus 1 year"
</IfModule>
<IfModule mod_headers.c>
# HTML 不缓存或短缓存;静态资源长缓存并公开
Header set Cache-Control "max-age=3600, public" "expr=%{CONTENT_TYPE} =~ m#^text/html#"
Header set Cache-Control "max-age=31536000, public, immutable" \
"expr=%{CONTENT_TYPE} =~ m#^(image|font|video|audio|application/javascript|text/css)#"
</IfModule>
五 安全头与日志监控
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
# 可选:Content-Security-Policy 按站点策略定制
</IfModule>