Próbuję stworzyć ReWriteEngine
reguły dotyczące witryny, którą prowadzę. Witryna ma dwie odmiany domen .co.uk
i .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 № 1Jeś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.