在 Ubuntu 上通过 Apache2 设置重定向,常见方式有以下几种,按使用频率从高到低给你说明,并附上示例。
.htaccess 做重定向(最常见)mod_rewritesudo a2enmod rewrite
sudo systemctl restart apache2
.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
.htaccessnano /var/www/html/.htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain\.com$ [NC]
RewriteRule ^(.*)$ https://newdomain.com/$1 [L,R=301]
Redirect 301 /old.html https://example.com/new.html
修改站点配置文件:
sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
<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 | 永久重定向(保留请求方法) |
sudo apache2ctl configtest
sudo systemctl restart apache2
✅ 重定向不生效?
mod_rewrite.htaccess 是否被允许(AllowOverride All)✅ HTTPS 不生效?
如果你愿意,可以告诉我:
我可以给你一份完全可直接复制的配置。