/ / ReWriteEngine robi odwrotność tego, co jest oczekiwane - .htaccess, mod-rewrite

ReWriteEngine robi coś przeciwnego do tego, co jest potrzebne - .htaccess, mod-rewrite

Próbuję stworzyć ReWriteEngine reguły dotyczące witryny, którą prowadzę. Witryna ma dwie odmiany domen .co.uki .com. To, czego szukam, to mieć .com przepisać na .co.uk ale zawsze upewnij się, że plik www. część jest na początku.Mam odwrotne zachowanie i nieprzewidziane zachowanie. Zobacz tę tabelę, aby zobaczyć pożądane przepisanie i to, co faktycznie otrzymuję. Reguły ReWriteCond i ReWriteRule były oparte na innych pytaniach Stackoverflow dotyczących podobnego problemu.

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

Przepisanie reguły i warunku

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

Odpowiedzi:

1 dla odpowiedzi № 1

Jeśli jesteś przekierowywany, możesz widzieć przekierowanie zapisane w pamięci podręcznej example.co.uk (Nie www), ponieważ obecna dyrektywa tego nie robi. Jeśli jednak chcesz przekierować inne niż www i www.example.com wtedy będziesz potrzebować dwóch warunków:

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

Tak więc, jeśli uzyskasz dostęp przez www.example.com lub nazwa hosta tak nie początek www. następnie przekierować. (example.com został złapany przez 2. warunek.)

Usunięto NC flaga z RewriteRule ponieważ jest to zbędne tutaj (.* pasuje do wszystkiego, niezależnie od przypadku.)

Wyczyść pamięć podręczną przeglądarki przed testowaniem. Zmiana R=302 do R=301 tylko wtedy, gdy jesteś pewien, że działa prawidłowo.