/ / ReWriteEngine robí opak toho, čo sa chce - .htaccess, mod-rewrite

ReWriteEngine robí opak toho, čo sa chce - .htaccess, mod-rewrite

Snažím sa vytvoriť ReWriteEngine pravidlá pre stránky, ktoré udržiavam. Stránka má dve varianty domén .co.uka .com. To, čo hľadám, je mať .com prepísať na .co.uk ale tiež sa vždy uistite, že www. časť je na začiatku.Dostávam však reverzné a nepredvídané správanie. V tejto tabuľke nájdete požadované prepísanie a to, čo vlastne dostávam. ReWriteCond a ReWriteRule boli založené na ďalších otázkach Stackoverflow týkajúcich sa podobného problému.

|    URL ENTERED    |   URL REWRITTEN   |  DESIRED REWRITE  | SUCCESS |
|-------------------|-------------------|-------------------|---------|
| www.example.com   | example.co.uk     | www.example.co.uk | No      |
| example.com       | www.example.co.uk | www.example.co.uk | Yes     |
| example.co.uk     | example.co.uk     | www.example.co.uk | No      |
| www.example.co.uk | www.example.co.uk | www.example.co.uk | Yes     |

Prepíšte pravidlo a stav

RewriteCond %{HTTP_HOST} ^(www.)?example.com  [NC]
RewriteRule ^(.*)  http://www.example.co.uk/$1     [R=301,L,NC]

odpovede:

1 pre odpoveď č. 1

Ak ste presmerovaní na server, pravdepodobne sa vám zobrazuje presmerovanie v pamäti example.co.uk (no www), pretože to vaša súčasná smernica nerobí. Ak však chcete presmerovať non-www a www.example.com potom budete potrebovať dve podmienky:

RewriteCond %{HTTP_HOST} ^www.example.com [NC,OR]
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule (.*) http://www.example.co.uk/$1 [R=301,L]

Ak teda pristupujete cez www.example.com alebo názov hostiteľa áno nie štart www. potom presmerovať. (example.com je chytený 2. podmienkou.)

Odstránené NC vlajka z RewriteRule pretože je to tu nadbytočné (.* sa zhoduje so všetkým, bez ohľadu na prípad.)

Pred testovaním vymažte vyrovnávaciu pamäť prehliadača. Zmena R=302 na R=301 iba ak ste si istí, že to funguje dobre.