温馨提示×

ubuntu apache2如何设置重定向

小樊
36
2026-08-16 20:54:25
栏目: 智能运维

在 Ubuntu 上通过 Apache2 设置重定向,常见方式有以下几种,按使用频率从高到低给你说明,并附上示例。


一、使用 .htaccess 做重定向(最常见)

1️⃣ 启用 mod_rewrite

sudo a2enmod rewrite
sudo systemctl restart apache2

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

编辑站点配置(如 000-default.conf 或你的站点 conf):

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:HTTP 重定向到 HTTPS

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

示例 2:域名重定向

RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain\.com$ [NC]
RewriteRule ^(.*)$ https://newdomain.com/$1 [L,R=301]

示例 3:访问旧页面跳转到新页面

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

二、在 Apache 站点配置中直接设置重定向(推荐生产环境)

修改站点配置文件:

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

1️⃣ HTTP → HTTPS

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

2️⃣ 域名跳转

<VirtualHost *:80>
    ServerName olddomain.com
    Redirect permanent / https://newdomain.com/
</VirtualHost>

然后启用 HTTPS 站点并重启:

sudo systemctl restart apache2

三、使用 Redirect 指令(简单重定向)

Redirect / https://example.com/

或指定状态码:

Redirect 301 /old-path https://example.com/new-path

四、使用 mod_alias(路径重定向)

Alias /old /var/www/new

或:

Redirect /old https://example.com/new

五、常见状态码说明

状态码 含义
301 永久重定向(SEO 推荐)
302 临时重定向
307 临时重定向(保留请求方法)
308 永久重定向(保留请求方法)

六、检查配置 & 重启 Apache

sudo apache2ctl configtest
sudo systemctl restart apache2

七、常见问题排查

✅ 重定向不生效?

  • 是否启用了 mod_rewrite
  • .htaccess 是否被允许(AllowOverride All
  • 浏览器是否缓存了 301(用无痕窗口测试)

✅ HTTPS 不生效?

  • 是否配置了 SSL 虚拟主机
  • 证书是否正确

如果你愿意,可以告诉我:

  • ✅ 是 HTTP → HTTPS 还是 域名跳转
  • ✅ 是否使用 .htaccess站点配置
  • ✅ Ubuntu 版本(20.04 / 22.04)

我可以给你一份完全可直接复制的配置

0