如何使用 .htaccess 根据域名重定向网页

如何使用 .htaccess 根据域名重定向网页

在服务多个域名(example.com、example.org 等)的网站上,我们希望根据域名重定向页面:

https://www.example.com/page1 => https://www.example.com/page2
https://www.example.org/page1 => https://www.example.org/page3

使用.htaccess,但以下内容:

Redirect "/page1" "https://www.example.com/page2"

将应用于两个领域。如何实现这一点?

答案1

推荐来自 Apache 项目的是:

一般而言,仅.htaccess当您无权访问主服务器配置文件时才应使用文件。[换句话说:您的站点位于共享主机上,并且您没有管理员级别的权限访问主 apache httpd 配置]...一个常见的误解用户身份验证和 mod_rewrite 指令必须放在.htaccess文件中。

因为使用.htaccess机制会损害性能。

因此,最好只是调整您的 httpd.conf(或用于设置您的站点的包含内容),为每个域设置单独的节,并在那里进行必要的重定向:

<VirtualHost *:443>
    DocumentRoot "/www/example"
    ServerName www.example.com

    # Other directives here

    Redirect "/page1" "https://www.example.com/page2"
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "/www/example"
    ServerName www.example.org

    # Other directives here

    Redirect "/page1" "https://www.example.org/page3"
</VirtualHost>

当您在共享主机上并且绝对必须使用文件时.htaccess;您的问题实际上与 ServerFault 无关,但方法是根据客户端使用的 HTTP Host: 标头进行不同的条件重定向。

您也可以使用<If>指示:

<If "%{HTTP_HOST} == 'www.example.com'">
    Redirect "/page1" "https://www.example.com/page2"
</If>
<If "%{HTTP_HOST} == 'www.example.org'">
    Redirect "/page1" "https://www.example.org/page3"
</If>

或者使用 mod_rewrite 规则:

RewriteCond "%{HTTP_HOST}"   "^www\.example\.com" [NC]
RewriteRule "^/page1"        "https://www.example.com/page2" [R]

RewriteCond "%{HTTP_HOST}"   "^www\.example\.org" [NC]
RewriteRule "^/page1"        "https://www.example.org/page3" [R]

相关内容