Hey,

Ik vraag me af of er een manier bestaat om bepaalde informatie uit de hyperlink in de adresbalk van je pagina te weren zonder de eigenlijke variabele te verwijderen?

vb. ik heb een pagina www. ... .be/provincie.php?provincie=Limburg en dit zou indien mogelijk www. ... .be/provincie Limburg moeten worden waarbij dat hij nog steeds weet dat hij de informatie uit die specifieke variabele moet gebruiken.

Mvg,
Google eens op: url rewrite htaccess. Indien je er niet uitkomt heb ik wel wat voorbeelden.
@gerhard: Ik ben wel geïnteresseerd in voorbeelden, want ik heb dezelfde vraag. En na 3 dagen goochelen en worstelen had ik het opgegeven. Alle uitleg die ik heb kunnen vinden over htaccess, heeft mij de oplossing niet kunnen brengen.

RewriteEngine on
RewriteRule ^([^/]*)/$ index.php?page=$1 [NC,L]	
RewriteRule ^([^/]*)$ index.php?page=$1 [NC,L]	
RewriteRule ^([^/]*)/([^/]*)/$ index.php?page=$1&id=$2 [NC,L]	


Je begint met RewriteEngine on voordat je de rewrites gaan maken in je .htacess bestand, deze zet je in de gewenste map, vaak de root.

1e voorbeeld met 1 var:
^ begin van de rewrite rule
([^/]*) Dit betekent alle tekens: a-zA-Z0-9 enz.
/ Slash op het einde van de url
$ einde van de opgevraagde url
index.php?page=$1 dit is waar je de opgevraagde url heen wil sturen, waar $1 de ([^/]*) is.
[NC,L] De link doorsturen

2e voorbeeld met 1 var zonder slash
^ begin van de rewrite rule
([^/]*) Dit betekent alle tekens: a-zA-Z0-9 enz.
$ einde van de opgevraagde url
index.php?page=$1 dit is waar je de opgevraagde url heen wil sturen, waar $1 de ([^/]*) is.
[NC,L] De link doorsturen

3e voorbeeld met 2 vars
^ begin van de rewrite rule
([^/]*)/([^/]*)/ Dit betekent alle tekens: a-zA-Z0-9 enz. Alleen nu dus gescheiden door een slash, waardoor er 2 vars opstaan.
$ einde van de opgevraagde url
index.php?page=$1&id=$2 dit is waar je de opgevraagde url heen wil sturen, waar $1 en $2 de vars zijn.
[NC,L] De link doorsturen
[^/] betekenT alle tekens, maar niet een /

* staat voor 0 of meer stuks
+ zou staan voor 1 of meer

Als je op regel 4 die /$ vervangt door /?$ dan mag de laatste / ook weggelaten worden

Het werkt nog steeds niet. Ik heb dit:
In de root het bestand index.php, dat steeds de inhoud ophaalt van de diverse pagina´s. Deze staan in /content.
De pagina´s roep ik aan met index.php?page=pagina. Als ik de htaccess in de root zet, dus bij de index.php, dan krijg ik de melding 'page not found'. Zet ik m in de map content, dan gebeurt er niks en blijf ik in de adresregel index.php?page=pagina zien.
Van welk bestand krijg je de not found dan? Controller of het pad klopt. Doe anders eerst in je index.php
een print_r($_GET); en kijk of de htaccess je de goede vars meegeeft.

En Ivo bedankt voor de toevoeging ;)

if (!isset($_GET['page'])) {
	//url-variable doesn´t exit, call homepage
	include('content/index.inc.php');
}
else {
	//url-variable exits, call file
	$page = 'content/'.$_GET['page'].'.inc.php';
	if (file_exists($page)) {
		//page exits, show page
		include($page);
	}
	else {
		//page doesn´t exit, show text
		echo 'This page you called for, doesn´t exit!';
	}
}

Dit is het deel uit index.php waar de inhoud steeds aangeroepen wordt. De inhoud staat dus in de subdirectory /content.
Een aangeroepen pagina staat in de adresregel weergegeven als: www.website.com/index.php?page=pagina.
Dat wil ik dus veranderen in: www.website.com/pagina.
In de htaccess heb ik dit staan:

RewriteEngine On
RewriteBase /
RewriteRule ^([^/]*)/?$ index.php?page=$1 [NC,L]

Vraag: Moet de htaccess in de root of in /content?
Vraag: Moet ik de subdirectory ergens vermelden?
De exacte foutmelding (not-foundmelding) is dit:
Not Found
The requested URL /index.php was not found on this server.
Apache/2.4.9 (Win64) PHP/5.5.12 Server at 127.0.0.1 Port 80
- in root
- nee
- je zou een / voor index.php?page=$1 moeten hebben
Niet met, niet zonder / werkt het, ik blijf de not-found-melding houden.
Heb het trouwens ook even met de online website getest, in geval het met wampserver te maken heeft, maar ook daar precies het zelfde.
Echt niemand een idee wat er fout is in bovenstaand script?

Reageren