Niet helemaal een PHP probleempje maar wel een .htaccess probleem.
Ik heb een oude url die ik beter wil hebben voor SEO optimalisatie.
Op dit moment is dat: /nieuwsarchief/nieuws_id/5603/
Ik wil dat dit wordt: /nieuwsarchief/id/5603/
Opzich niet zo moeilijk natuurlijk maar ik wil ook dat als je perongeluk nog terecht komt op de oude url dat je doorgestuurd wordt naar de nieuwe url.
Het kan zijn natuurlijk dat mensen de oude url op een site hebben staan of in Google en ik wil wel dat dit blijft werken.
Hoe kan ik dit het beste oplossen?
Via htaccess of via een header? Als het via een header moet hoe moet dit er dan uit komen te zien en waar moet dit terecht komen?

Alvast bedankt!
Rewriterule nieuwsarchief/nieuws_id/(\d+) /nieuwsarchief/id/$1/ [R=301]

Lijkt mij het simpelst
IVO p, dankjewel voor je reactie.
Hij geeft een 301 weer dat hij is verplaatst maar geeft nog niet het artikel weer.
Dit is wat ik nu heb:
RewriteRule ^nieuwsarchief/id/(\d+)/(.*)$ index.php?p=nieuwsarchief&nieuws_id=$1&titel=$2
RewriteRule ^nieuwsarchief/id/(\d+)$ index.php?p=nieuwsarchief&nieuws_id=$1&titel=$2

Dit werkt dus voor de clean url.
Maar nu wil ik dus nog dat die
oude url naar het nieuwe gaat.

Met lukte het niet:
Rewriterule nieuwsarchief/nieuws_id/(\d+) /nieuwsarchief/id/$1/ [R=301]

Toevoeging op 24/10/2015 12:54:16:

IVO p, dankjewel voor je reactie.
Hij geeft een 301 weer dat hij is verplaatst maar geeft nog niet het artikel weer.
Dit is wat ik nu heb:
RewriteRule ^nieuwsarchief/id/(\d+)/(.*)$ index.php?p=nieuwsarchief&nieuws_id=$1&titel=$2
RewriteRule ^nieuwsarchief/id/(\d+)$ index.php?p=nieuwsarchief&nieuws_id=$1&titel=$2

Dit werkt dus voor de clean url.
Maar nu wil ik dus nog dat die
oude url naar het nieuwe gaat.

Met lukte het niet:
Rewriterule nieuwsarchief/nieuws_id/(\d+) /nieuwsarchief/id/$1/ [R=301]
hoe luidt de url na de redirect? ligt het eventueel aan het ontbreken van de titel?

Wat als je probeert

Rewriterule nieuwsarchief/nieuws_id/(\d+) /nieuwsarchief/id/$1/foo [R=301]

of zonder eind-slash?

Rewriterule nieuwsarchief/nieuws_id/(\d+) /nieuwsarchief/id/$1 [R=301]
Helaas ook dit lukt niet.

Het gaat om deze url:
http://www.test.fcttoday.nl/nieuwsarchief/nieuws_id/5612/domper-voor-fc-twente-schilder-nog-wel-even-uit-de-roulatie

Dit moet dus doorgeschakeld worden naar:
http://www.test.fcttoday.nl/nieuwsarchief/id/5612/domper-voor-fc-twente-schilder-nog-wel-even-uit-de-roulatie

ik heb het al zover dat als er geen titel is dus alleen maar:
http://www.test.fcttoday.nl/nieuwsarchief/nieuws_id/5612/
Dat die automatisch wordt doorgestuurd naar de titel.

Maar nu wil ik dus ook dat de oude url met nieuw_id door wordt gestuurd naar id.

Met de twee mogelijkheden van jou lukt het tot op heden niet.
Wellicht enigszins offtopic, maar dat kan wat korter?
/nieuws/<id>/<titel>, of zelfs
/nieuws/<titel>

en

/nieuws/archief/<id>/<titel>, of zelfs
/nieuws/archief/<titel>

?

Verder is het misschien handig dat je exacte matches doet, dus je hele patroon tussen ^...$.
Ik snap niet wat je bedoelt...
Ik ben niet helemaal thuis in .htaccess.

RewriteRule ^nieuwsarchief/id/(\d+)/(.*)$ index.php?p=nieuwsarchief&nieuws_id=$1&titel=$2
RewriteRule ^nieuwsarchief/id/(\d+)$ index.php?p=nieuwsarchief&nieuws_id=$1&titel=$2

Dit is wat ik nu heb en dat werkt.

Nu moet alleen nieuws_id ook naar id verwijzen.
Probleem is dat dit dan zou gaan om 5700 berichten...
Eh? Je kunt nog steeds gebruik maken van je generieke rewriterules, het enige wat je hoeft te doen is dit:
RewriteRule <oud relatief pad> <nieuw relatief pad> [R=301]


te veranderen in:
RewriteRule <oud relatief pad> http://je.domein.com/<nieuw relatief pad> [R=301]


In plaats van een relatief pad moet dit een volledige url zijn...

Reageren