mod_rewrite, opmaak weg
Ik gebruik op mijn website de onderstaande code in mijn .htacces bestand:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/?$ index2.php?page=$1
ErrorDocument 403 error403.php
ErrorDocument 404 error404.php
Als ik nu de link http://www.website.nl/home gebruik, dan werkt alles correct.
Gebruik ik dezelfde link, maar dan met een / op het eind, dan is de opmaak van mijn website verdwenen en wordt als variabele "home/" doorgegeven.
Haal ik de ? in de RewriteRule weg, dan wordt de variabele goed doorgegeven, maar is de opmaak van mijn website nog steeds verdwenen. Tevens werkt de link dan niet meer zonder / op het eind.
Ik heb geen idee waar ik de fout moet zoeken. Kan iemand mij misschien op weg helpen?
RewriteRule ^(.*)$ index2.php?page=$1
Je layout komt waarschijnlijk doordat hij je css en/of afbeeldingen niet kan vinden.
Het beste is om een base element als eerste in de HEAD te zetten. Hierin geef je aan wat de base url is voor alle afbeeldingen/stylesheets/javascripts, kortom assets, is:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!doctype html>
<html lang="nl">
<head>
<base href="http://jouwwebsite.nl/assets_base/">
<meta charset="utf-8">
<title>Cheerio!</title>
<link rel="stylesheets" href="css/style.css">
</head>
<body>
<h1>Cheerio!</h1>
<img src="img/logo.png">
<script src="js/scripts.js"></script>
</body>
</html>
<html lang="nl">
<head>
<base href="http://jouwwebsite.nl/assets_base/">
<meta charset="utf-8">
<title>Cheerio!</title>
<link rel="stylesheets" href="css/style.css">
</head>
<body>
<h1>Cheerio!</h1>
<img src="img/logo.png">
<script src="js/scripts.js"></script>
</body>
</html>
In dit voorbeeld wordt de stylesheet geladen uit /assets_base/css/style.css; de afbeelding uit /assets_base/img/logo.png; de scripts uit /assets_base/js/script.js.
Je kunt de base natuurlijk ook instellen op de root: href="http://jouwwebsite.nl/"
Als ik dat doe, werkt de site nog steeds niet zonder de / aan het eind. Het is de bedoeling dat de site werkt met en zonder / aan het eind.
En het is toch vreemd dat de layout wel werkt zonder / op het eind, en met niet.
Met de RewriteCond sluit ik bestaande bestanden uit van de RewriteRule.
De bovenstaande code die ik gebruik, is geheel conform de tutorial op deze website.
Toevoeging op 24/09/2012 16:55:56:
Als ik het adres van de stylesheets aanroep, krijg ik gewoon de stylesheet te ziet, en wordt er geen mod_rewrite uitgevoerd.
@Wouter J
Dat lost het probleem ook niet op, ik zie geen enkele verandering
Gewijzigd op 24/09/2012 16:57:32 door Hans W
Heb je anders een url dat we kunnen kijken?
http://www.kraamzorgcora.nl
Ik ben er inmiddels wel achter dat wanneer ik http://kraamzorgcora.nl/home/ gebruik, de website de stylesheets en afbeeldingen probeerd te laden uit de directory /home/. Voor de css stylesheets heb ik dit inmiddels opgelost, alleen voor afbeeldingen in de stylesheets gebruik ik ../../ om terug te gaan naar de root van de site. Als hij gaat zoeken in de directory /home/, zou er dus nog een ../ toegevpegd moeten worden.
Dit zou toch opgelost moeten kunnen worden in het .htacces bestand? Volgens de turotial heb ik bestaande bestanden uitgesloten van de RewriteRule middels de RewriteCond.
Het adres is Ik ben er inmiddels wel achter dat wanneer ik http://kraamzorgcora.nl/home/ gebruik, de website de stylesheets en afbeeldingen probeerd te laden uit de directory /home/. Voor de css stylesheets heb ik dit inmiddels opgelost, alleen voor afbeeldingen in de stylesheets gebruik ik ../../ om terug te gaan naar de root van de site. Als hij gaat zoeken in de directory /home/, zou er dus nog een ../ toegevpegd moeten worden.
Dit zou toch opgelost moeten kunnen worden in het .htacces bestand? Volgens de turotial heb ik bestaande bestanden uitgesloten van de RewriteRule middels de RewriteCond.