.htaccess triggert niet
Ik heb een probleem met mijn .htaccess bestand.
Op de een of andere manier rewrite 't volgende blokje code niet de URL
zoals het zou moeten.
De bedoeling is: http://www.opkoers.nl/projecten/1
maar dit krijg ik niet voor elkaar. Hij blijft de link in de URL balk plaatsen
als projecten.php?id=1.
Ik heb diverse tutorials gevolgd op internet waaronder hier in de
tutorial sectie maar het wil maar niet lukken... Heb zelfs de code gekopieerd en
geplakt en alleen de namen veranderd van de paginanaam, en dat werkt niet.
De mod_rewrite functie staat wel aan volgens de phpinfo();
Ik ben nieuw met de mod_rewrite functie van Apache en ik test zowel
lokaal op localhost als op internet in mijn development server.
Dit is de code die ik gebruik. Met een Regex erin om het cijfer van de ID
te plaatsen na de tweede forslash (= / ).
Alvast bedankt!
Justin
Gewijzigd op 23/06/2010 10:42:08 door Justin S
Code (php)
1
2
3
4
5
2
3
4
5
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^projecten/([0-9]+)$ projecten.php?id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^projecten/([0-9]+)$ projecten.php?id=$1 [L]
Gewijzigd op 23/06/2010 20:35:48 door Arjan -
Ik krijg nog steeds /projecten.php?id=2
http://www.opkoers.nl/projecten/1 krijg ik een 404 error, klopt dit?
En als ik naar http://www.opkoers.nl/projecten.php?id=1 ga krijg ik deze error ook. Volgens mij bestaat het bestand projecten.php niet of wel?
De htaccess staat in de webroot?
Als ik naar En als ik naar http://www.opkoers.nl/projecten.php?id=1 ga krijg ik deze error ook. Volgens mij bestaat het bestand projecten.php niet of wel?
De htaccess staat in de webroot?
Gewijzigd op 23/06/2010 20:40:01 door Arjan -
http://environment.visual-masters.nl/opkoers/projecten/3 ga dan komt er netjes een pagina met helemaal onderaan het getal 3 (corresponderende met de id). Dit is toch goed?
Als ik naar Oh en m'n plaatjes werken dan niet meer. Moet ik dan ook diezelfde conditions gebruiken als Dennis?
Gewijzigd op 23/06/2010 20:45:33 door Justin S
Edit: Gewoon mijn code gebruiken in mijn 2e post. Dan moet het allemaal goed werken.
Gewijzigd op 23/06/2010 20:47:43 door Arjan -
De href van mijn links moet dus zijn: http://environment.visual-masters.nl/opkoers/projecten/1
En daarbij moeten al mijn links abstract zijn, dus bijvoorbeeld als ik naar de home pagina wil navigeren,
moet de link zijn: http://environment.visual-masters.nl/opkoers/home omdat hij deze anders vervormd
naar /projecten/home/.
Ook mijn plaatjes moeten dus een volledig uitgeschreven URL hanteren: http://environment.visual-masters.nl/opkoers/images/slideshow/image_001.jpg
Heb ik dit correct?
Dit kan je doen met een <base href="http://environment.visual-masters.nl/opkoers/" />
Hiermee kan je de links naar pagina's als volgt maken:
<a href="/projecten/3">Project nummero 3</a>
Quote:
En daarbij moeten al mijn links abstract zijn, dus bijvoorbeeld als ik naar de home pagina wil navigeren,
moet de link zijn: http://environment.visual-masters.nl/opkoers/home omdat hij deze anders vervormd
naar /projecten/home/.
moet de link zijn: http://environment.visual-masters.nl/opkoers/home omdat hij deze anders vervormd
naar /projecten/home/.
Nee want alleen http://environment.visual-masters.nl/opkoers/projecten/..... wordt nu herschreven naar http://environment.visual-masters.nl/opkoers/projecten.php?id=.....
Dus wanneer je /home gebruikt zal deze niet herschreven worden.
En belangrijk om te weten is wanneer je als voorbeeld http://environment.visual-masters.nl/opkoers/projecten/3 hebt, dan ziet html deze als een directory "projecten" waarin een directory "3" zit. Hierdoor zullen je relatieve paden naar bijvoorbeeld "images/....." niet meer kloppen. Want hij gaat dan op zoek naar de map "images" in de map "3" (die dus niet bestaat).
Gewijzigd op 23/06/2010 21:01:44 door Arjan -
Thanks!
Ja, leer jezelf aan om altijd absolute paden te gebruiken. Dit voorkomt problemen met rewrites, etc.
Hoe rewrite ik dan de URL met de goede naam? (geen cijfer dit keer)
Stel: over ons laadt in op de index.php
http://environment.visual-masters.nl/opkoers/index.php?page=$1
Dan is de rewrite:
RewriteRule ^paginanaam index.php?page=$1
Of moet ik deze dan los erin zetten?
Gewijzigd op 23/06/2010 21:17:12 door Justin S
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^home/ index.php [L]
RewriteRule ^home/(.*)$ index.php?page=$1 [L]
RewriteRule ^projecten/([0-9]+)$ projecten.php?id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^home/ index.php [L]
RewriteRule ^home/(.*)$ index.php?page=$1 [L]
RewriteRule ^projecten/([0-9]+)$ projecten.php?id=$1 [L]
Ik denk dat de volgorde verkeerd is, of wellicht de regex. Heeft iemand
een idee/suggestie?
Het is de bedoeling dat de volgende urls worden gerewrite.
www.opkoers.nl/home/ => www.opkoers.nl/index.php
www.opkoers.nl/wiezijnwij/ => www.opkoers.nl/index.php?page=2
www.opkoers.nl/projecten/ => www.opkoers.nl/projecten.php
www.opkoers.nl/projecten/2/ => www.opkoers.nl/projecten.php?id=2
Ik heb alleen niet echt een idee hoe ik het voor elkaar krijg met de regex.
kunnen aanpassen naar
zodat je zeker weet dat hij pas matcht als er minimaal 1 teken staat.
Gewijzigd op 24/06/2010 20:23:00 door Piet Verhagen
maar als ik vanaf projecten dan terugga naar home, komt er te staan: /home/index.php
Is de volgorde dan weer niet goed?
Justin Streuper op 24/06/2010 20:29:45:
... maar als ik vanaf projecten dan terugga naar home, komt er te staan: /home/index.php
Wat is daar verkeerd aan? Wat had het anders moeten wezen? Je wilt naar home, je komt is home en je bent niet tevreden?
jawel, maar de url is niet goed herschreven. Hier hoort enkel /home/ te staan, en niet /home/index.php.
Justin Streuper op 24/06/2010 22:39:52:
jawel, maar de url is niet goed herschreven. Hier hoort enkel /home/ te staan, en niet /home/index.php.
Dan moet je in de html code niet schrijven:
maar
Quote:
de url is niet goed herschreven
Misschien denk je verkeerd. Mod_rewrite veranderd niets aan de html, het 'herschrijft' de links in jou html niet. Als jij in de html schrijft
dan krijgt de bezoeker die link zo gewoon op zn scherm en als tie erop klikt gaat tie gewoon naar /home/index.php.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^home/(.+)$ index.php?page=$1 [L]
RewriteRule ^projecten/ projecten.php [L]
RewriteRule ^home/ index.php [L]
RewriteRule ^projecten/([0-9]+)$ projecten.php?id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^home/(.+)$ index.php?page=$1 [L]
RewriteRule ^projecten/ projecten.php [L]
RewriteRule ^home/ index.php [L]
RewriteRule ^projecten/([0-9]+)$ projecten.php?id=$1 [L]
En dan is regel 6 in het bovenstaande blokje van toepassing. Terwijl dat eigenlijk wellicht niet de bedoeling is, je zou willen dat regel 8 de request afhandelt. In de PHP code van /home/index.php zou je dat als volgt kunnen opvangen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
if(!isset($_GET['page']) || $_GET['page'] == 'index.php') {
// bezoeker heeft in zn adresbalk staan: /home/ of /home/index.php
} else {
// bezoeker heeft in zn adresbalk achter /home/ iets staan dan index.php
if($_GET['page'] == 'informatie') {
// bezoeker heeft in zn adresbalk staan: /home/informatie
} elseif($_GET['page'] == 'bestellen') {
// bezoeker heeft in zn adresbalk staan: /home/bestellen
}
}
?>
if(!isset($_GET['page']) || $_GET['page'] == 'index.php') {
// bezoeker heeft in zn adresbalk staan: /home/ of /home/index.php
} else {
// bezoeker heeft in zn adresbalk achter /home/ iets staan dan index.php
if($_GET['page'] == 'informatie') {
// bezoeker heeft in zn adresbalk staan: /home/informatie
} elseif($_GET['page'] == 'bestellen') {
// bezoeker heeft in zn adresbalk staan: /home/bestellen
}
}
?>
Gewijzigd op 24/06/2010 23:23:48 door Piet Verhagen