温馨提示×

apache2如何设置重定向

小樊
45
2026-10-05 03:31:00
栏目: 编程语言

在 Apache2 中设置重定向,常见方式有以下几种,按使用场景说明:


一、使用 Redirect(最简单)

适用于整站或目录级别的简单重定向。

1. 修改虚拟主机或站点配置

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

2. 或在 .htaccess 中

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

301 永久重定向,302 临时重定向


二、使用 mod_rewrite(最灵活,推荐)

1. 启用 rewrite 模块

sudo a2enmod rewrite
sudo systemctl restart apache2

2. HTTP → HTTPS 重定向

<VirtualHost *:80>
    ServerName example.com
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>

3. 旧页面重定向到新页面

RewriteEngine On
RewriteRule ^old-page\.html$ /new-page.html [R=301,L]

4. 带参数的重定向

RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=123$
RewriteRule ^product\.php$ /new-product? [R=301,L]

三、使用 .htaccess 文件(适合共享主机)

确保 Apache 允许 .htaccess:

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

示例 .htaccess:

RewriteEngine On
RewriteRule ^about$ /about-us [R=301,L]

四、域名重定向(不带路径)

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

五、常见注意事项

  1. 修改配置后重启 Apache:
    sudo systemctl restart apache2
    
  2. 测试配置文件:
    apache2ctl configtest
    
  3. 浏览器会缓存 301,测试时建议用隐身模式。

如果你有具体场景(如:子目录跳转、带参数、多级域名、Laravel/WordPress),可以告诉我,我可以给你精确配置。

0 踩