login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Htaccess vraag

Offline MachielK - 27/12/2012 16:52
Avatar van MachielKNieuw lid Hallo,

Ik gebruik de volgende regels in mijn htaccess file om $_GET['pagina'] te verwerken tot een mooie url en om bestaande mappen uit te sluiten.

  1. RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
  2. RewriteCond %{REQUEST_FILENAME} -d [NC]
  3. RewriteRule ^(.*?)$ $1 [L]
  4. RewriteBase /
  5. RewriteEngine On
  6. RewriteRule ^(.*?)$ index.php?pagina=$1 [L,QSA]


Werkt allemaal prima. Maar nu heb ik de volgende link om een bericht te veranderen. site.nl/berichten/veranderen?id=1. (Zonder htaccess: site.nl/index.php?pagina=berichten/veranderen&id=1.

Van site.nl/berichten/veranderen?id=1 wil ik -> site.nl/berichten/veranderen/1 maken. Maar wel nog steeds dat $_GET['id'] 1 is.

Maar als ik hier een nieuwe RewriteRule voor ga schrijven pakt hij (denk ik) die /1 nog steeds als een pagina, en hij bestaat niet als een pagina.

Kan iemand me verder helpen :S
(ID=1 is als voorbeeld genomen, het kan natuurlijk elk getal dan ook zijn)

3 antwoorden

Gesponsorde links
Offline GroundZero - 30/12/2012 02:11
Avatar van GroundZero Lid De regel waar je TWEE argumenten mee behandeld moet je BOVEN de regel waar je EEN argument mee behandeld plaatsen.

Mijn site bijvoorbeeld

  1. RewriteRule ^producten/(.*)/$ index.php?product=$1 [L]
  2. RewriteRule ^producten/(.*)/(.*)/$ index.php?product=$1&vergelijking=$2 [L]


Jij gebruikt iets andere code die ik zelf nooit gebruikt heb dus geen idee maar misschien heb je er iets aan wat ik net zij ;)
Offline Martijn - 02/01/2013 21:47
Avatar van Martijn Crew PHP Wat jij wilt is erg lastig met htaccess, omdat wat jij nu voorstelt 1 situatie is. Als jij een ander onderdeel op je site zet, heb je niets aan die regel.
Wat ik op mn werk aangeleerd heb gekregen is dat ALLES wordt omgezet naar " ?q=HierAllesDus$1 ".
En dan kun je in php met een case kijken wat er allemaal in staat

Klein voorbeeldje voor jouw situatie:
  1. // splits de url in stukjes gesplits op /
  2. $urlDelen = explode("/", trim( $_GET['g'], "/"); // De trim haalt de slashes aan het begin en einde weg
  3. switch($urlDelen[0]){
  4. case "producten":
  5. echo "Wel producten, en de tweede waarde in de url is: ".$urlDelen[1];
  6. break;
  7. default:
  8. echo "geen producten, maar alles anders (de default dus)";
  9. break;
  10. }

Offline leroyvanloon - 04/01/2013 13:55
Avatar van leroyvanloon Lid
  1. Options +FollowSymlinks
  2. RewriteEngine On
  3. RewriteBase /
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteCond %{REQUEST_FILENAME} !-d
  6.  
  7. RewriteBase /
  8.  
  9. RewriteRule ^(.*)$ /index.php [L]


Dit werkt prima

dan dit in index gebruiken:
  1. $_ARG = explode("/", $_SERVER["REQUEST_URI"]);


En dit gerbuiken om pagina's te changen:

  1. define('LOADED', true);
  2. if (!isset($_ARG[1]) || strlen($_ARG[1]) <= 0)
  3. $szSite = "home.php";
  4. else
  5. $szSite = $_ARG[1].".php";
  6.  
  7. if (file_exists("pages/".$szSite))
  8. {
  9. include_once("pages/".$szSite);
  10. }
  11. else
  12. include_once("pages/main.php");
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.221s