Preciso redirecionar temporariamente meu site para uma versão estática hospedada na Cloudflare. O site atual é um site Wordpress hospedado em Ionos e Wordpress parece estar fazendo um redirecionamento 301 de mydomain.com
para www.mydomain.com
. Eu gostaria de poder continuar acessando a instância do Wordpress indo para www.mydomain.com
mas se eu (ou qualquer outra pessoa) for para mydomain.com
eu gostaria de ser redirecionado para static.mydomain.com
.
Coloquei isso no meu .htaccess
arquivo:
<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>
No entanto, quando eu visito mydomain.com
, ainda sou redirecionado www.mydomain.com
, então parece que o .htaccess RewriteRule não está sendo acionado e, portanto, o Wordpress está fazendo seu redirecionamento.
Existe alguma maneira em .htaccess (não tenho acesso ao arquivo de configuração do Apache) para forçar um redirecionamento como estou descrevendo?
Estou assumindo que a versão estática do seu site (em
static.example.com
) é literalmente um site estático que não é do WordPress, portanto, não pode ser responsável por nenhum redirecionamento.Não há nada realmente "errado" com sua regra publicada. No entanto, ...
O redirecionamento 301 (permanente) anterior "WordPress" de não www para www terá sido armazenado em cache (persistentemente) pelo cache do navegador (e possivelmente intermediário). Isso precisará ser limpo manualmente para que seu redirecionamento
.htaccess
tenha algum efeito.Seu redirecionamento deve ir no topo do
.htaccess
arquivo antes do bloco de código do WordPress (reescrever para o front-controller), ou seja. antes do# BEGIN WordPress
marcador de comentário. Se você colocar o redirecionamento no final do arquivo (ou após o bloco de código do WordPress) ele só será processado para solicitações de recursos estáticos (e diretórios). Os URLs (virtuais) do WordPress não serão redirecionados, pois a solicitação já foi reescrita paraindex.php
(o controlador frontal do WordPress).Aparte:
Só um pouco de arrumação... você não precisa repetir a
RewriteEngine On
diretiva, pois ela já aparece mais tarde no arquivo, no bloco de código do WordPress.Você não precisa do
<IfModule>
invólucro. Esse redirecionamento deve ocorrer, não é opcional .A segunda condição (
RewriteCond
diretiva) não é necessária. Não há necessidade de verificar se oHost
isA
e notB
. (Se for,A
então não pode serB
tão bem.)Assim, o acima pode ser simplificado para: