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.
@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.
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
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.
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
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.