linux

怎样通过Apache配置优化SEO

小樊
40
2025-11-23 03:26:50
栏目: 编程语言

通过 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

三 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]

四 性能优化 压缩与缓存

<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>

0
看了该问题的人还看了