温馨提示×

ubuntu apache2怎么设置301跳转

小樊
41
2026-08-27 21:56:24
栏目: 智能运维

Ubuntu + Apache2 下设置 301 永久重定向(跳转),常见有几种方式。下面按最常用 → 进阶给你说明,你可以直接照用。


一、最推荐方式:使用 .htaccess(适合虚拟主机)

1️⃣ 开启 mod_rewrite

sudo a2enmod rewrite
sudo systemctl restart apache2

2️⃣ 修改站点配置,允许 .htaccess

编辑你的站点配置(例如):

sudo nano /etc/apache2/sites-available/000-default.conf

<Directory /var/www/html> 中加入:

AllowOverride All

示例:

<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

然后重启 Apache:

sudo systemctl restart apache2

3️⃣ 在网站根目录添加 .htaccess

nano /var/www/html/.htaccess

✅ 示例 1:整个域名 301 跳转到新域名

RewriteEngine On
RewriteCond %{HTTP_HOST} ^old.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.old.com$
RewriteRule ^(.*)$ https://www.new.com/$1 [L,R=301]

✅ 示例 2:HTTP 强制跳 HTTPS

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]

✅ 示例 3:单个页面跳转

Redirect 301 /old.html https://www.new.com/new.html

二、直接在 Apache 虚拟主机中设置(推荐生产环境)

不用 .htaccess,性能更好 ✅

编辑站点配置:

sudo nano /etc/apache2/sites-available/your-site.conf

✅ 域名跳转

<VirtualHost *:80>
    ServerName old.com
    ServerAlias www.old.com

    Redirect 301 / https://www.new.com/
</VirtualHost>

✅ HTTP 跳 HTTPS

<VirtualHost *:80>
    ServerName www.example.com
    Redirect 301 / https://www.example.com/
</VirtualHost>

然后:

sudo systemctl restart apache2

三、HTTPS 站点之间的 301 跳转

<VirtualHost *:443>
    ServerName old.com
    SSLEngine on
    SSLCertificateFile /path/to/cert.crt
    SSLCertificateKeyFile /path/to/key.key

    Redirect 301 / https://www.new.com/
</VirtualHost>

四、常见问题排查

❌ 跳转不生效?

  1. 是否重启 Apache
sudo systemctl restart apache2
  1. 是否开启 rewrite
apache2ctl -M | grep rewrite
  1. 清除浏览器缓存(301 会被浏览器强缓存)

五、301 vs 302 区别

  • 301:永久跳转(SEO 会转移权重 ✅)
  • 302:临时跳转(不推荐长期使用)

如果你愿意,可以直接把你的 域名 / 需求(如 http→https、旧域名→新域名) 发我,我可以帮你写一份可直接复制的配置

0