Ik zou graag van een bepaalde directory recursief alles willen
redirecten naar een andere site, zoiets:
www.hallo.nl/aabb/* -> www.hallo2.nl/aabb/*
Maar hoe doe ik dat?
Met vriendelijke groet,
Paul van der Vlis.
In de configblock voor 'www.hallo.nl' zet je een rewriterule:
RewriteRule ^aabb(.*) http://www.hallo2.nl/aabb$1 [R=CODE,L]
'CODE' vervang je door 'temp', 'permanent' of 'seeother' om
respectievelijk een HTTP 302, 301 of 303 status te retourneren.
--
robert
Hmm, hij doet het zo in eerste instantie niet.
Moet er misschien een dollar bij, zoiets?
RewriteRule ^aabb(.*)$ http://www.hallo2.nl/aabb$1 [R=CODE,L]
Maar ook daarmee werkt het niet...
Zou dit niet ook matchen op b.v.
http://www.hallo/aabb.html
Terwijl ik alleen de directory aabb wil?
Uiteraard heb ik de rewrite module geladen.
Ik had van die code een "permanent" gemaakt, maar eigenlijk weet ik niet
goed wat het betekend. Zoiets staat er nu:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^aabb(.*) http://wwww.hallo2.nl/aabb$1 [R=permanent,L]
</IfModule>
Maakt ook niks uit.
> Zou dit niet ook matchen op b.v.
> http://www.hallo/aabb.html
> Terwijl ik alleen de directory aabb wil?
Dat is inderdaad zo, als dat echt een probleem is moet je er ^aabb/(.*) van
maken (zonder quotes). De reden waarom dat meestal niet gebeurt is om een
nutteloze interne redirect van /aabb naar /aabb/ te voorkomen.
> Ik had van die code een "permanent" gemaakt, maar eigenlijk weet ik niet
> goed wat het betekend.
Dat is het soort redirect. Zie:
http://en.wikipedia.org/wiki/HTTP_301 (permanent)
http://en.wikipedia.org/wiki/HTTP_302 (temp)
http://en.wikipedia.org/wiki/HTTP_303 (seeother)
De keuze is meestal een van 'permanent' of 'temp'.
> Zoiets staat er nu:
In de globale httpd-config of in een .htaccess file? Dat laatste wil
namelijk niet altijd werken.
> <IfModule mod_rewrite.c>
> RewriteEngine On
> RewriteRule ^aabb(.*) http://wwww.hallo2.nl/aabb$1 [R=permanent,L]
Is die 'wwww' een typo of klopt dat?
> </IfModule>
Je kunt met RewriteLog en RewriteLogLevel laten loggen wat er gebeurt, dat
geeft vaak wat meer info over waarom iets niet werkt. En even nagaan in de
errorlog van je Apache dat er niks mis is.
--
robert
Moet dat niet ^/aabb/(.*) zijn?
Het kan ook met een
RedirectMatch permanent ^/aabb/(.*)$ http://www.hall2.nl/aabb/$1
Dan heb je de rewrite-module niet nodig, mocht je die nergens anders
voor gebruiken.
--
Groet,
Wietse
Als /aabb/ geen bestaande directory meer is op de oude server, en iemand
vraagt /aabb op (in plaats van wat 'ie eigenlijk bedoelde, namelijk
/aabb/), dan krijgt die bezoeker een 404 in plaats van dat 'ie geredirect
wordt naar de nieuwe server.
Mocht de directory nog wel bestaan krijg je een extra redirect (wat op zich
niet echt een drama is :).
> Het kan ook met een
> RedirectMatch permanent ^/aabb/(.*)$ http://www.hall2.nl/aabb/$1
>
> Dan heb je de rewrite-module niet nodig, mocht je die nergens anders
> voor gebruiken.
Dat scheelt inderdaad weer :)
--
robert
Ah, fraai. Ik heb er nu 2 regels van gemaakt:
RedirectMatch permanent ^/aabb$ http://www.hallo2.nl/aabb
RedirectMatch permanent ^/aabb/(.*)$ http://www.hallo2.nl/aabb/$1
Voordeel is dat door die eerste regel ook http://www.hallo.nl/aabb goed
werkt (dus zonder slash op het eind).
Typo, het is maar een voorbeeld.
>> </IfModule>
>
> Je kunt met RewriteLog en RewriteLogLevel laten loggen wat er gebeurt, dat
> geeft vaak wat meer info over waarom iets niet werkt. En even nagaan in de
> errorlog van je Apache dat er niks mis is.
>
Met vriendelijke groet,
Dan doet dit hetzelfde:
RedirectMatch permanent ^/aabb(.*) http://www.hallo2.nl/aabb$1
--
robert
Nee, want dat reageert ook op b.v. http://www.hallo.nl/aabb2/ of op
http://www.hallo.nl/aabbennogmeer.html
Uh ja, daar heb je gelijk in :)
--
robert