Hallo iedereen, ik heb ten einde raad, zit al dagen te klooien met url rewrite.

Op mijn productie loopt alles van een leien dakje en daar kreeg ik alles meteen aan de praat.

Op mijn testserver loopt alles mis, heb eindelijk url rewrite aan de praat gekregen en dit is wat er misgaat:

Ik heb een pagina "nieuws.php" en een pagina "nieuwsbericht.php".

Als ik dus bijvoorbeeld naar "localhost/nieuws/" ga wil ik dat de pagina naar localhost/nieuws.php gaat.
Deze pagina toont een overzicht van 5 nieuwsberichtsamenvattingen die een url bevatten om door te gaan naar nieuwsbericht.php

Deze url is als volgt : http://localhost/nieuws/1245310441/Audi-R8-V10-Spyder.html

Dit werkt perfect op mijn productieserver online, lokaal gaat hij echter altijd naar nieuws.php, als ik dit bestand wis gaat hij wel naar nieuwsbericht.php, hoe komt dit??


mijn .htaccess RewriteRules:
RewriteRule ^nieuws/$ nieuws.php
RewriteRule ^nieuws/(.*)/$ nieuwsbericht.php?id=$1
RewriteRule ^nieuws/([0-9]+)/([a-zA-Z0-9_-]+)\.html$ nieuwsbericht.php?id=$1
Even een opmerking over de tweede regel, daar kan beter nog een vraagteken op het eind erbij, en .* veranderen in [0-9]
Ik ga ervan uit dat ID een nummer is als "1234", en niet iets als "Nieuwe auto bekend".
Bovendien zou ik de * vervangen door +
Anders matcht het ook http://localhost/nieuws//
Voorgestelde tweede regel:
RewriteRule ^nieuws/[0-9]+/?$ nieuwsbericht.php?id=$1

Waar heb je dit bestand (.htaccess) staan?
Het maakt wel degelijk uit of je het in de hoofdmap plaats toegangelijk voor web) of een map daarboven.
Heb je het in bv /www/public_html opgeslagen, waarbij public_html de map die openbaar is, dan zou het moeten werken.
Heb je het in de map daarboven, /www, dan zul je de ^nieuws moeten vervangen door ^public_html/nieuws.
Volgens mij is de eerste "RewriteRule" regel niet nodig.

Wat je ook zou kunnen gebruiken is Apache MultiViews.

Dan werken deze adressen gewoon:
http://localhost/nieuws
http://localhost/nieuws/1234/blaat

Moet je wel een script maken "nieuws.php" die zowel een lijst met nieuws als een nieuws item in detail kan weergeven.
Om "1234" te grijpen kun je niet $_GET gebruiken maar b.v. $_SERVER['REQUEST_URI'].
Eerste regel is om naar nieuws.php te gaan, waar het overzicht is ;)

Reageren