Ik ben bezig met het opnieuw opbouwen van m'n website en wil daarbij gelijk van een aantal subdomeinen af.
Die wil ik wel redirecten naar het hoofddomein, maar ik kom er niet uit.

Huidige situatie van een subdomein:
bv: http://eten.hoofddomein.nl/zoek/bloemkool
(Bloemkool is hierbij een zoekterm en kan van alles zijn)

Hoe ik het wil hebben:
http://hoofddomein.nl/rubriek/eten/bloemkool

Ben al een tijdje bezig en heb al van alles geprobeerd, maar het lukt me niet helemaal. Loop iedere keer vast op de zoekterm en subdomein.

Wat ik tot nu toe heb is dat http://eten.hoofddomein.nl/zoek/bloemkool omgezet wordt naar http://www.hoofddomein.nl/rubriek
Dat doe ik met onderstaande in de .htaccess

RewriteCond %{HTTP_HOST} ^eten.hoofddomein.nl$
RewriteRule ^(.*)$ http://hoofddomein.nl/rubriek/ [R=301,L]

Hoe krijg ik het voor elkaar dat ik "eten" en "bloemkool" in de nieuwe url krijg?
Wie kan me hiermee helpen?
zo iets?


RewriteCond %{HTTP_HOST} ^(eten).hoofddomein.nl$
RewriteRule zoek/(.*)$ http://hoofddomein.nl/rubriek/%1/$1 [R=301,L]

# zonder de zoekterm:
RewriteCond %{HTTP_HOST} ^(eten).hoofddomein.nl$
RewriteRule ^(.*)$ http://hoofddomein.nl/rubriek/%1 [R=301,L]



Als het aantal URL's te overzien is en je geen conflicten tussen subdomeinen verwacht, kan het eventueel nog zonder de rewrite engine:

Redirect 301 /zoek/bloemkool http://hoofddomein.nl/rubriek/eten/bloemkool
Bedankt voor je reactie Ward, maar het zijn nogal wat URL's, dus in dit geval geen optie.

Ik heb de code van Ivo getest en op zich werkt die. Als ik het voor 1 subdomein in de .htaccess zet. Alleen heb ik meerdere subdomeinen. Dus wat ik gedaan heb is een regel toegevoegd, maar dan blijft het alleen werken voor de eerste regel. Doe ik iets verkeerd, moet het op een andere manier?


RewriteCond %{HTTP_HOST} ^(eten).hoofddomein.nl$
RewriteCond %{HTTP_HOST} ^(drinken).hoofddomein.nl$
RewriteRule zoek/(.*)$ http://hoofddomein.nl/rubriek/%1/$1 [R=301,L]
 
iets te snel gecopy-paste :-)


RewriteCond %{HTTP_HOST} ^([^.]+).hoofddomein.nl$
RewriteRule zoek/(.*)$ http://hoofddomein.nl/rubriek/%1/$1 [R=301,L]

# zonder de zoekterm:
RewriteCond %{HTTP_HOST} ^([^.]+).hoofddomein.nl$
RewriteRule ^(.*)$ http://hoofddomein.nl/rubriek/%1 [R=301,L] 


Jij eist nu namelijk dat de url begint met "eten" EN dat de url begint met "drinken".
dat is strijdig. Een OR zou nog kunnen helpen, maar maakt de %1 weer lastig.

met "[^.]+" zeg je

^. staat voor NIET een punt
+ staat voor 1 of meer keer.

Er wordt dus gezocht naar alle letters/cijfers etc vanaf het begin van de domainname tot de eerste punt.
Door de ( ) eromheen komt die waarde in %1 terecht.
Helemaal goed, dit werkt prima zo, bedankt! Loop alleen nog tegen 1 dingetje aan. Ik heb een aantal subdomeinen die helemaal van naam veranderen. Dus wat ik zou willen is de gegeven code zo laten staan omdat die goed werkt. En dan een aantal extra regels toevoegen voor de paar uitzonderingen.

dus als voorbeeld een uitzondering als:
huidig: fruitengroente.hoofddomein.nl/zoek/appel
nieuw: hoofddomein.nl/rubriek/groente-en-fruit/appel

Is dit mogelijk, en hoe zou ik dit moeten aanpakken?
Ik zou de rules aan het einde aanvullen met:


RewriteRule rubriek/fruitengroente/(.*)  /rubriek/groente-en-fruit/$1  [R=301,L]


hoeft eigenlijk niet eens aan het einde, maar wel handig om eea een beetje te groeperen als er veel rules komen

[size=xsmall]Toevoeging op 14/09/2015 13:19:27:[/size]

@Terminiation:
had je daarvoor niet speciale rechten nodig om een rewritemap te kunnen plaatsen op de server?

Een restart van Apache is volgens mij ook nodig.
Speciale rechten zou ik niet durven te zeggen, maar je kan het iig niet in een .htaccess proppen.
Een apache restart is wel nodig inderdaad, maps worden alleen bij het starten van de server ingelezen.
Bedankt voor de reacties, het is me allemaal een stuk duidelijker geworden zo. Ga er vanavond mee aan de slag en kijken hoe ver ik ga komen.

Reageren