Snažím sa vytvoriť ReWriteEngine
pravidlá pre stránky, ktoré udržiavam. Stránka má dve varianty domén .co.uk
a .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ď č. 1Ak 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.