在 Ubuntu 上使用 Apache 设置 301 永久重定向(跳转),通常有以下几种常见方式。下面按最常用、最推荐的顺序说明。
sudo a2enmod rewrite
sudo systemctl restart apache2
编辑站点配置文件(示例):
sudo nano /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
ServerName old.com
Redirect 301 / https://new.com/
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
Redirect 301 / https://example.com/
</VirtualHost>
Redirect 301 /old.html https://example.com/new.html
保存后:
sudo systemctl restart apache2
✅ 优点:稳定、性能好、不依赖 .htaccess
在虚拟主机中确保有:
<Directory /var/www/html>
AllowOverride All
</Directory>
然后重启 Apache。
nano /var/www/html/.htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteEngine On
RewriteRule ^old.html$ https://example.com/new.html [R=301,L]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
| 场景 | 方法 |
|---|---|
| 域名更换 | Redirect 301 |
| http → https | Redirect 301 / rewrite |
| 带 www ↔ 不带 www | rewrite |
| 单个 URL 变更 | Redirect 301 |
curl -I http://old.com
应看到:
HTTP/1.1 301 Moved Permanently
Location: https://new.com/
如果你能说明 具体跳转场景(如域名变更、http 转 https、某路径跳转),我可以给你更精确的配置。