permanent redirect 301 in htacces

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michiel v

michiel v

10/04/2014 17:20:04
Quote Anchor link
Hallo,

Ik heb mijn url's met mod_rewrite in de .htacces file aangepast. Maar hoe kan ik nou een rewriterule 301 maken naar een andere rewriterul?

Zie onderstaand de oude pagina die ik wil 301 redirecten naar de nieuwe pagina. Eigenlijk moet het woordje oud worden vervangen door het woordje nieuw.

<script>
OUDE rewriterule:
RewriteRule ^oud/(.*)/(.*)/(.*)/(.*)$ listing.php?subcategory=$1&lang=$2&categoryid=$3&subcategoryid=$4


NIEUWE rewriterule:
RewriteRule ^nieuw/(.*)/(.*)/(.*)/(.*)$ listing.php?subcategory=$1&lang=$2&categoryid=$3&subcategoryid=$4

</script>
 
PHP hulp

PHP hulp

22/11/2024 11:54:45
 
Willem vp

Willem vp

10/04/2014 18:07:19
Quote Anchor link
Waarschijnlijk bedoel je dit?

RedirectMatch 301 ^oud/(.*)$ nieuw/$1
Gewijzigd op 11/04/2014 13:59:13 door Willem vp
 
Michiel v

michiel v

11/04/2014 08:38:29
Quote Anchor link
Hoi Willem,

Bedankt voor je reactie!

Bedoel je dat de url in mijn geval er dan zo uit moet komen te zien?

<script>
Redirectmatch 301 $oud/(.*)/(.*)/(.*)/(.*)$ listing.php?subcategory=$1&lang=$2&categoryid=$3&subcategoryid=$4 $nieuw/(.*)/(.*)/(.*)/(.*)$ listing.php?subcategory=$1&lang=$2&categoryid=$3&subcategoryid=$4

</script>

of

<script>
Redirectmatch 301 $oud/(.*)/(.*)/(.*)/(.*)$ $nieuw/(.*)/(.*)/(.*)/(.*)$ listing.php?subcategory=$1&lang=$2&categoryid=$3&subcategoryid=$4

</script>

Ik hoor het graag!
 
Ivo P

Ivo P

11/04/2014 09:15:22
Quote Anchor link
wat wil je bereiken? (in tekst, niet in code)

Wil je elke url die begint met /oud/... vervangen door /nieuw/...

waarbij de tekst op ... gelijk blijft?

Of geldt dat alleen voor de situatie dat er na /oud/ nog 4 "mappen" volgen?

In het eerste geval:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
RewriteRule ^/?oud/(.*)   /nieuw/$1  [R=301]


of de redirectmatch-syntax die mij niet bekend is. (al lijkt me dat de $ voor oud een ^ moet zijn.
 
Michiel v

michiel v

11/04/2014 09:23:21
Quote Anchor link
Beste Ivo,

Ik heb nu een rewriterule zie: RewriteRule ^oud/(.*)/(.*)/(.*)/(.*)$ listing.php?subcategory=$1&lang=$2&categoryid=$3&subcategoryid=$4


Nu wil ik alleen het woordje "oud" aanpassen naar bijvoorbeel "nieuw", maar als ik dat doe is de oude url niet meer bereikbaar dus wil ik er een 301 redirect van maken zodat Google weet dat de url verplaatst is.

Maar hoe doe ik dat? Ik vindt het een beetje moeilijk om uit te leggen maar hoop dat het zo duidelijker is.
 
Ivo P

Ivo P

11/04/2014 09:35:13
Quote Anchor link
Dan plaats je de redirect regel hoger in je .htaccess file dan de "herschrijf naar listing.php " regel.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
# eerst alles wat met "oud" begint, naar "nieuw", met een 301
RewriteRule ^oud/(.*)   /nieuw/$1  [R=301]

# dan begint de betreffende regel dus niet meer met "oud", maar met "nieuw":
RewriteRule ^nieuw/(.*)/(.*)/(.*)/(.*)$ listing.php?subcategory=$1&lang=$2&categoryid=$3&subcategoryid=$4 [L]



--
ik heb de /? weggelaten uit de eerste regel, aangezien het op jouw server kennelijk zonder begin-slash werkt.

--
Als je de server benadert met een url /oud/..... dan wordt er eerst een redirect uitgevoerd: er wordt tegen de browser gezegd: ga maar eens kijken op /nieuw/.....

Browser vraagt die url op.
Eerste regel is niet van toepassing, dus hobbelen we verder.
Dan matchen we op de regel "begint met nieuw/ en dan 4 mappen."
die wordt vervolgens omgezet (intern) naar listing.php met wat parameters.

Je eindigt dan dus op de goede pagina met een url in de adresbalk van de browser die met /nieuw begint
 
Michiel v

michiel v

11/04/2014 09:45:11
Quote Anchor link
Top Ivo,

Zo simpel kan het zijn je moet het alleen even weten;-)

Bedankt!

Groeten,

Michiel

Toevoeging op 11/04/2014 13:51:17:

Hoi Ivo,

Ik heb een GET laten vervallen hoe kan ik dit nu oplossen met de redirect? De categoryID is komen te vervallen.

oud
listing.php?subcategory=$1&lang=$2&categoryid=$3&subcategoryid=$4 [L]

nieuw
listing.php?subcategory=$1&lang=$2&subcategoryid=$3 [L]
 
Michael -

Michael -

11/04/2014 13:55:08
Quote Anchor link
Gewoon een (.*)/ minder en de categoryid weghalen en $4 wordt dan $3....
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
# dan begint de betreffende regel dus niet meer met "oud", maar met "nieuw":
RewriteRule ^nieuw/(.*)/(.*)/(.*)$ listing.php?subcategory=$1&lang=$2&subcategoryid=$3 [L]
 
Michiel v

michiel v

11/04/2014 14:04:33
Quote Anchor link
Hoi Michael,

Het punt is dat de categoryid na de 301 redirect de subcategoryid word omdat de subcategoryID op de plaats staat van de categoryid.

Ik moet denk ik in de 301 redirect aangeven dat de categoryid is komen te vervallen.

iets van:
RewriteRule ^oud/(.*)(.*)vervallen(.*) /nieuw/$1 [R=301]
 
Willem vp

Willem vp

11/04/2014 14:10:51
Quote Anchor link
Ivo P op 11/04/2014 09:15:22:
of de redirectmatch-syntax die mij niet bekend is. (al lijkt me dat de $ voor oud een ^ moet zijn.

Oeps, foutje. Het moest inderdaad een ^ zijn.

Het verschil tussen RedirectMatch en RewriteRule is dat de eerste onderdeel is van mod_alias en de tweede van mod_rewrite. In principe heeft het de voorkeur om Redirect of RedirectMatch te gebruiken; dat zal een performance-dingetje zijn, omdat mod_rewrite een vrij zware module is.

Overigens zou de redirect nog simpeler moeten kunnen:

Redirect 301 /oud /nieuw
 
Michiel v

michiel v

11/04/2014 14:27:13
Quote Anchor link
Het punt is nu dat de categoryid is komen te vervallen en de categoryid op de plaats komt van de subcategoryid. zie als onderstaand. Bij een redirect komt het getal "1" te staan waar eigenlijk "30" moet staan.

oude url
http://mijdomein.nl/oud/nl/1/30

nieuwe url moet zijn 30 zoals onderstaand maar met een 301 redirect wordt het 1:
http://mijdomein.nl/nieuw/nl/30

Toevoeging op 11/04/2014 14:53:55:

Beste allen,

Ik heb het als volgt kunnen oplossen. (zoals je ziet heb ik de $3 weggelaten, nu is die dus komen te vervallen)

RewriteRule ^oud/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/ /nieuw/$1/$2/$4/$5/$6/ [R=301]
RewriteRule ^oud/(.*)/(.*)/(.*)/(.*)/(.*)/ /nieuw/$1/$2/$4/$5/ [R=301]
RewriteRule ^oud/(.*)/(.*)/(.*)/(.*)/ /nieuw/$1/$2/$4/ [R=301]
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.