Ik ben vandaag begonnen met het opzetten van een nieuwe portfolio website, nu wil ik deze geheel vanaf de grond opbouwen en ook alles zo netjes mogelijk doen. Hier hoort uiteraard ook een mooie url rewrite bij.
Nu heb ik de volgende structuur bedacht voor het rewriten:
/portfolio/index.php?p=weblog&a=addmsg
/portfolio/index.php?p=guestbook&a=view&id=23
etc..
Vervolgens staat in mijn .htaccess bestand het volgende:
En met php include ik de juiste pagina in index.php:
Dus de link wordt dan: http://localhost/portfolio/weblog/addmsg
Dit lijkt allemaal goed te gaan op 1 ding na: mijn base doet het niet meer.
Ik heb het base path in een config.php bestand staan welke bovenin de index ge-include wordt.
Daarna heb ik in de header het volgende staan: <base href="<?php echo $root; ?>" />
$root = "http://localhost/portfolio/";
Alleen wanneer ik nu in de broncode kijk, zie ik dat er het volgende staat: <base href="" /> (leeg dus..)
Daardoor werkt mijn link naar het stylesheet niet meer (href="style/stylesheet.css") en doen afbeeldingen het niet meer. Wanneer ik de URL niet dmv een variabele invul bij de base werkt het wel naar behoren, iemand enig idee hoe dit komt?
En is de manier van pagina's includen zo goed, of zijn er betere methodes hiervoor? Deed dit 'vroeger' altijd met een switch statement, alleen dan moest je voor iedere nieuwe pagina de switch weer uitbreiden.
Nu heb ik de volgende structuur bedacht voor het rewriten:
/portfolio/index.php?p=weblog&a=addmsg
/portfolio/index.php?p=guestbook&a=view&id=23
etc..
Vervolgens staat in mijn .htaccess bestand het volgende:
code:
1
2
3
| RewriteEngine On RewriteRule ^(.*)/(.*)/(.*) /portfolio/index.php?p=$1&a=$2&id=$3 RewriteRule ^(.*)/(.*) /portfolio/index.php?p=$1&a=$2 |
En met php include ik de juiste pagina in index.php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| <?php if(isset($_GET['p']) OR ($_GET['a'])) { $path = strtolower("pages/{$_GET['p']}/{$_GET['a']}.php"); if(file_exists($path)) { include ($path); } else { echo "<b>Fout:</b> Pagina niet gevonden!"; } } else { include("pages/start.php"); } ?> |
Dus de link wordt dan: http://localhost/portfolio/weblog/addmsg
Dit lijkt allemaal goed te gaan op 1 ding na: mijn base doet het niet meer.
Ik heb het base path in een config.php bestand staan welke bovenin de index ge-include wordt.
Daarna heb ik in de header het volgende staan: <base href="<?php echo $root; ?>" />
$root = "http://localhost/portfolio/";
Alleen wanneer ik nu in de broncode kijk, zie ik dat er het volgende staat: <base href="" /> (leeg dus..)
Daardoor werkt mijn link naar het stylesheet niet meer (href="style/stylesheet.css") en doen afbeeldingen het niet meer. Wanneer ik de URL niet dmv een variabele invul bij de base werkt het wel naar behoren, iemand enig idee hoe dit komt?
En is de manier van pagina's includen zo goed, of zijn er betere methodes hiervoor? Deed dit 'vroeger' altijd met een switch statement, alleen dan moest je voor iedere nieuwe pagina de switch weer uitbreiden.