Ik heb een website met een cms. De website is door mijzelf gemaakt,maar het cms door iemand anders. Nu zit er een fout in de manier waarop de htaccess wordt geschreven vanuit het cms voor de nette urls.

Er wordt voor iedere pagina een regel geschreven in de htaccess. Dat gaat allemaal netjes. Probleem komt nu wanneer er twee url's met hetzelfde begin. bijv www.pagina.nl/projecten en www.pagina.nl/projecten/project1
Wanneer de regel in de htaccess voor de eerst url eerst staat, dan pakt hij alleen deze. Ook wanneer je url 2 probeert te openen.

Oplossing zou zijn als de url's op volgorde van lengte in de htaccess weggeschreven zouden worden. Op die manier gaat het altijd goed. Weet iemand hoe ik dat zou kunnen doen ? Of is er misschien een andere oplossing ?

Hieronder een deel van de regels die zorgen voor de nieuwe htaccess:
$qp = "SELECT * FROM tbl_pages WHERE google_url != ''";
$rp = DBQuery("$qp");
while($sp = mysql_fetch_row($rp))
{
$page_id = $sp[0];
$google_url = $sp[23];
// openen nieuwe htaccess zodat we data kunnnen schrijven
$fp = fopen($filename,'a+');
fwrite($fp,"\nRewriteRule ^".$google_url." /php/index.php?page_id=".$page_id."");

Ik weet dat het systeem van het schrijven naar de htaccess niet ideaal is. Maar ik zit nu aan dit systeem vast en mijn kennis over php en htaccess is zeer beperkt. Dus als ik het bestaande systeem zou kunnen aanpassen zou ik al blij zijn.

Alvast bedankt
Een beetje omslachtige manier om elke keer je .htaccess aan te moeten passen. Het lijkt me makkelijker om in je .htaccess universele rewriterules te hebben die voor alle mogelijke urls werken.

Maar goed, aangezien het systeem wellicht niet meer aan te passen is, toch een duwtje in de goede richting. Je zou bijvoorbeeld eerst alle data uit de database in een array kunnen zetten, op die manier kun je er al eenvoudiger mee werken. Daarna zul je moeten denken over een manier waarop je de lengte van de urls kunt bepalen, je zult moeten kijken naar het aantal keer dat er een / in voorkomt (substr_count()). Dan is het nog een kwestie van sorteren op dat aantal en vervolgens het schrijven van de .htaccess.

Nu mag jij dit stappenplan iets verder uitwerken. Daarbij is het zeker aan te raden om de php.net handleiding te gebruiken, waardevolle informatie is daar te vinden.

Succes!

Reageren