在 Ubuntu 上使用 Apache 做 301 永久重定向(跳转),常见有以下几种方式,按使用场景说明。
.htaccess(适合虚拟主机 / 不想改主配置).htaccess 支持编辑站点配置(如 /etc/apache2/sites-available/000-default.conf):
<Directory /var/www/html>
AllowOverride All
</Directory>
然后重启 Apache:
sudo systemctl restart apache2
.htaccessnano /var/www/html/.htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old.com$ [NC]
RewriteRule ^(.*)$ https://new.com/$1 [R=301,L]
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Redirect 301 /old.html https://new.com/new.html
编辑站点配置文件:
sudo nano /etc/apache2/sites-available/your-site.conf
<VirtualHost *:80>
ServerName old.com
Redirect 301 / https://new.com/
</VirtualHost>
<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>
mod_rewrite.htaccess 是否被允许(AllowOverride)301 会被浏览器强缓存,测试时建议:
curl -I http://old.com如果你能说明 具体跳转场景(如:
我可以给你更精确的配置。