Puncte:1

Cum se face ca mod_rewrite să forțeze o redirecționare?

drapel fr

Trebuie să-mi redirecționez temporar site-ul către o versiune statică găzduită pe Cloudflare. Site-ul actual este un site Wordpress găzduit la Ionos și Wordpress pare să facă o redirecționare 301 de la mydomain.com la www.domeniulmeu.com. Aș dori să pot continua să accesez instanța Wordpress accesând www.domeniulmeu.com dar dacă eu (sau oricine altcineva) merg la mydomain.com Aș dori să fiu redirecționat către static.mydomain.com.

Am pus asta în mine .htaccess fişier:

<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>

Totuși, când vizitez mydomain.com Încă sunt redirecționat către www.domeniulmeu.com deci se pare că .htaccess RewriteRule nu se declanșează și astfel Wordpress își face redirecționarea.

Există vreo modalitate în .htaccess (nu am acces la fișierul de configurare Apache) de a forța o redirecționare așa cum descriu eu?

Puncte:1
drapel kz

Presupun că versiunea statică a site-ului dvs. (la static.example.com) este literalmente un site static non-WordPress, așa că nu poate să țină cont de redirecționări.

Nu este nimic „în neregulă” cu regula dvs. așa cum este postată. In orice caz, ...

  1. Redirecționarea anterioară „WordPress” 301 (permanentă) de la non-www la www va fi stocată în cache (persistent) de browser-ul (și, eventual, intermediar). Acest lucru va trebui să fie șters manual pentru redirecționare .htaccess să aibă vreun efect.

  2. Redirecționarea dvs. trebuie să meargă la top al .htaccess fişier inainte de blocul de cod WordPress (rescriere pe controlerul frontal), de exemplu. inainte de cel # ÎNCEPE WordPress marcator de comentarii. Dacă plasați redirecționarea la sfârșitul fișierului (sau după blocul de cod WordPress) aceasta va fi procesată doar pentru solicitările către resurse statice (și directoare). Adresele URL (virtuale) WordPress nu vor fi redirecționate, deoarece solicitarea a fost deja rescrisă index.php (controlerul frontal WordPress).


Deoparte:

<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>

Doar un pic de îngrijire... nu trebuie să repeți RewriteEngine Pornit directivă, deoarece aceasta apare deja mai tarziu în fișier, în blocul de cod WordPress.

Nu aveți nevoie de <IfModule> învelitoare. Această redirecționare trebuie să aibă loc, nu este opțional.

Al doilea condiție (RescrieCond directivă) nu este necesară. Nu este nevoie să verificați că Gazdă este A si nu B. (Daca este A atunci nu poate fi B de asemenea.)

Deci, cele de mai sus ar putea fi simplificate astfel:

# Redirecționează temporar vârful domeniului către subdomeniul „static”.
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule (.*) https://static.example.com/$1 [R=302,L]

# ÎNCEPE WordPress
: Urmează alte directive....

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.