温馨提示×

ubuntu apache如何做301跳转

小樊
36
2026-10-19 19:41:49
栏目: 智能运维

在 Ubuntu 上使用 Apache 做 301 永久重定向(跳转),常见有以下几种方式,按使用场景说明。


一、使用 .htaccess(适合虚拟主机 / 不想改主配置)

1. 开启 .htaccess 支持

编辑站点配置(如 /etc/apache2/sites-available/000-default.conf):

<Directory /var/www/html>
    AllowOverride All
</Directory>

然后重启 Apache:

sudo systemctl restart apache2

2. 在网站根目录创建/编辑 .htaccess

nano /var/www/html/.htaccess

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

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

示例 2:HTTP 跳 HTTPS

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

示例 3:单个页面跳转

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

二、在 Apache 虚拟主机中配置(推荐,性能更好)

编辑站点配置文件:

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

示例 1:旧域名 → 新域名

<VirtualHost *:80>
    ServerName old.com
    Redirect 301 / https://new.com/
</VirtualHost>

示例 2:HTTP → HTTPS

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

启用站点并重启:

sudo a2ensite your-site.conf
sudo systemctl restart apache2

三、使用 mod_rewrite(更灵活)

确保模块已开启:

sudo a2enmod rewrite
sudo systemctl restart apache2

在 <VirtualHost> 中:

<VirtualHost *:80>
    ServerName example.com
    RewriteEngine On
    RewriteRule ^/(.*)$ https://example.com/$1 [R=301,L]
</VirtualHost>

四、常见问题

1. 跳转不生效?

  • 是否重启 Apache
  • 是否启用 mod_rewrite
  • .htaccess 是否被允许(AllowOverride)

2. 清除浏览器缓存

301 会被浏览器强缓存,测试时建议:

  • 用隐身窗口
  • 或 curl -I http://old.com

如果你能说明 具体跳转场景(如:

  • 域名换域名?
  • http 转 https?
  • 带 www 不带 www?
  • 单页面跳转?)

我可以给你更精确的配置。

0 踩