Mijn eerste stappen in de wereld van mod_rewrite wil niet lukken

Status
Niet open voor verdere reacties.
Het spijt me, ik geef het wederom op....

Het woord "Overige" kan misschien ook vaker op mijn pagina voorkomen.
Dit is iets wat ik nooit ga snappen of voor elkaar krijg.

Bedankt voor je tijd en hulp :)
 
Het maakt niet uit hoevaak het woord op een pagina staat, het gaat om wat er in de adresbalk staat.

mod_rewrite is geen zoek-en-vervang, het is een mechanisme dat op serverniveau werkt en je browser eigenlijk om de tuin leidt.

Heb je uberhaupt geprobeerd om de RewriteRule te testen? Dus .htaccess aangemaakt en in je browser naar /Overige gegaan en op de pagina die je verwacht aan te roepen (index.php) de $_SERVER-variabele te echoën om te kijken wat er gebeurd?
 
Hier de code van het menu-tabje "Overig":

PHP:
<li><a href="#"><strong>Overig</strong></a>
                <ul>
                <li>
                  <?php
			//	laat de subrubrieknaam zien					
			$query = "
				SELECT 
					naam,
					id,
					hoofdrubriek_id,
					tip
				FROM 
					subrubriek
				WHERE 
					hoofdrubriek_id = 5
				AND zichtbaar <> FALSE
				ORDER BY 
					naam";						
			$result = mysql_query($query);
				if(!$result){
    						trigger_error(mysql_error().'<br />In query: '.$query) ;
							}else{
								
								while($row = mysql_fetch_assoc($result)){
									echo $_SERVER['REDIRECT_QUERY_STRING'];
									?>
                                    
                  <a href="Overig/<?php echo $row['naam'];?>"  rel="nofollow" ><img src="images/bullet_blue.png" alt="Acties" border="0" align="absmiddle" /><?php echo $row['naam']?></a>
                  
                  
                  <?php
				  
										}
									}
									?>
                                    </li>
                </ul>
          </li>

Ik heb even een testpagina aangemaakt: http://www.voormijnkind.eu/index-test.php
In de .htaccess heb ik index.php gewijzigd in index-test.php

Ik weet niet waar ik die testregel neer moet zetten.

Als ik nu klik op een link dan gebeurt er niets. (Overig/Geboortekaartjes)

Op de index-test.php pagina heb ik dit staan om naar de inhoud.php pagina te gaan zodra er op een menu-link wordt geklikt:

PHP:
if(isset($_GET['subrubriek_id']))
		{
			include("inhoud.php");
		}

Moet ik dit ook nog op een andere manier doen?
 
De testregel kun je gewoon bovenaan index-test.php zetten :)

Op de index-test.php pagina heb ik dit staan om naar de inhoud.php pagina te gaan zodra er op een menu-link wordt geklikt:
PHP:
if(isset($_GET['subrubriek_id']))
		{
			include("inhoud.php");
		}
Moet ik dit ook nog op een andere manier doen?

Ah kijk, ja dat zul je ook moeten veranderen aangezien er geen subrubriek_id via de URL meegegeven wordt :)
Je daar nu moeten controleren of $_GET['hoofdrubriek'] aanwezig is, en bij het opvragen van de pagina uit de database moet je dus ook de WHERE daarop baseren.
 
Moet ik in de database in de subrubriek tabel nu ook de namen van de hoofdrubriek zetten?
Nu staan daar de hoofdrubriek_id's.

Ik krijg deze foutmelding: Unknown column 's' in 'where clause'
PHP:
<div class="kopjes" id="kopjes"><?php
    //naam van rubriek en subrubriek
	$query ="
	SELECT
		h.naam,
		s.id,
		s.naam
	AS subnaam
	FROM 
		hoofdrubriek AS h
	LEFT JOIN 
		subrubriek AS s
	ON 
		s.hoofdrubriek_id = h.id
	WHERE 
		s.naam = ".$_GET['subrubriek']."
	GROUP BY h.id
	";	
	$result = mysql_query($query) or die (mysql_error());
	if(!$result)
	{
    	trigger_error(mysql_error().' ('.$query.')');
	}
	else
		{
		$row = mysql_fetch_assoc($result);
		echo $row['naam'].' - '.$row['subnaam'];
		}
		?></div>

Het stukje controle code staat direct onder de <body>-tag en geeft dit aan: hoofdrubriek=g&subrubriek=s
 
Laatst bewerkt:
De naam van de hoofdrubriek hoef je er niet in te zetten, die kan via de koppeling via ID wel achterhaalt worden :)

De rewrite lijkt deels te werken, hoe ziet je .htaccess er nu uit?

Overigens is het streng aan te raden mysql_real_escape_string() om variabelen te zetten die naar de database gestuurd worden. Dit om SQL-injection te voorkomen. (Nog beter is prepared-statements te gebruiken, maar dat is wellicht een stap te ver :))
 
HTML:
RewriteEngine On

RewriteRule ^([a-zA-Z])+\/([a-zA-Z])+$ index-test.php?hoofdrubriek=$1&subrubriek=$2 [L]
RewriteRule ^([a-zA-Z])+$ index-test.php?hoofdrubriek=$1 [L]

De code die ik je als laatste heb gestuurd is alleen maar om de naam van de hoofdrubriek en de subrubriek zichtbaar te maken boven aan de pagina. Zodat bezoekers weten waar ze op geklikt hebben. Maar blijkbaar gaat daar al iets mis.

Hoe zou die code er dan uit moeten zien?
 
Volgens mij gaat daar niets mis, overigens is de weergave op de pagina voorlopig bijzaak.

Het gaat er om dat de URL van "/Overige/Geboortekaartjes" omgezet wordt naar "/index-test.php?hoofdrubriek=Overige&subrubriek=Geboortekaartjes". Dit is een klusje dat de .htaccess moet regelen en is PHP dus niet voor nodig :)

Ik vermoed dat het in de RewriteRule zit.
Probeer dit eens:
Code:
RewriteEngine On
RewriteRule ^([a-zA-Z]+)\/([a-zA-Z]+)$ index-test.php?hoofdrubriek=$1&subrubriek=$2 [L]
 
Zo zie je maar dat ik het principe nog steeds niet snap.

Als ik nu naar de broncode kijk zie ik dit bij het controle script staan: hoofdrubriek=Overig&subrubriek=Geboortekaartjes
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan