我需要将我的网站临时重定向到托管在 Cloudflare 上的静态版本。当前站点是托管在 Ionos 的 Wordpress 站点,Wordpress 似乎正在执行从mydomain.com
to的 301 重定向www.mydomain.com
。我希望能够通过转到继续访问 Wordpress 实例,www.mydomain.com
但如果我(或其他任何人)转到mydomain.com
我希望被重定向到static.mydomain.com
.
我把它放在我的.htaccess
文件中:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain.com
RewriteCond %{HTTP_HOST} !^www.mydomain.com
RewriteRule ^(.*) https://static.mydomain.com/$1 [R=302,L]
</IfModule>
但是,当我访问时,mydomain.com
我仍然被重定向到www.mydomain.com
,所以似乎 .htaccess RewriteRule 没有被触发,所以 Wordpress 正在执行它的重定向。
.htaccess 中是否有某种方式(我无权访问 Apache 配置文件)来强制重定向,就像我描述的那样?
我假设您网站的静态版本 (at
static.example.com
) 实际上是一个静态的非 WordPress 网站,因此它本身不能解释任何重定向。您发布的规则实际上没有任何“错误”。然而, ...
先前从非 www 到 www 的“WordPress”301(永久)重定向将被浏览器(可能还有中间)缓存(永久)缓存。这将需要手动清除以使您的重定向
.htaccess
生效。您的重定向必须在WordPress 代码块之前的文件顶部(重写到前端控制器),即。在评论标记之前。如果您将重定向放在文件末尾(或 WordPress 代码块之后),则只会处理对静态资源(和目录)的请求。WordPress(虚拟)URL 不会被重定向,因为请求已经被重写到(WordPress 前端控制器)。
.htaccess
# BEGIN WordPress
index.php
在旁边:
稍微整理一下……您不需要重复该
RewriteEngine On
指令,因为它已经出现在文件后面的 WordPress 代码块中。您不需要
<IfModule>
包装器。此重定向必须发生,它不是可选的。第二个条件(
RewriteCond
指令)不是必需的。无需检查Host
isA
和 notB
。(如果是,A
那么它不可能B
也是如此。)因此,上述可以简化为: