.htaccess triggert niet
Beste PHPhulp-ers,
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
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
Probeer eens een [L] toe te voegen aan het einde van de regel, dus:
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 -
Nee dat maakt geen verschil, op de een of andere manier zorgt hij niet voor de URL rewrite.
Ik krijg nog steeds /projecten.php?id=2
Ik krijg nog steeds /projecten.php?id=2
Als ik naar 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?
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 -
Het is niet opkoers.nl, dit is de huidige site die vervangen gaat worden.
Probeer: http://environment.visual-masters.nl/opkoers/
Probeer: http://environment.visual-masters.nl/opkoers/
Als ik naar 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?
Moeten de links dan ook corresponderen met die URL? Ik was in de veronderstelling dat de link dan nog gewoon naar projecten.php?id=2 geleid moest worden?
Oh en m'n plaatjes werken dan niet meer. Moet ik dan ook diezelfde conditions gebruiken als Dennis?
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
Nee, dat is juist niet de bedoeling. Het is de bedoeling dat alle links in de html codes ook veranderd worden naar projecten/3 . Deze zal dan de pagina projecten.php?id=3 openen (echter is dit niet zichtbaar).
Edit: Gewoon mijn code gebruiken in mijn 2e post. Dan moet het allemaal goed werken.
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 -
Nu volg ik je niet helemaal meer.
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?
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?
Het beste is om gebruik te maken van een absoluut pad in je links. Hierdoor zullen alle verwijzingen blijven kloppen.
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>
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).
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 -
Duidelijk, en m'n plaatjes moeten wel met volledige URL ingevoerd worden dus :-).
Thanks!
Thanks!
Ja, leer jezelf aan om altijd absolute paden te gebruiken. Dit voorkomt problemen met rewrites, etc.
Ik heb zegmaar ook nog pagina's die dezelfde opmaak kennen als de home pagina.
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?
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
Ik probeer bovenstaande te bereiken, maar de onderstaande code is geen succes.
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.
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.
Je zou zoieso regel 6 en 7 om moeten draaien lijkt me. En
kunnen aanpassen naar
zodat je zeker weet dat hij pas matcht als er minimaal 1 teken staat.
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
Het stomme is, met de volgende code gaat het goed van /home/ naar /projecten/
maar als ik vanaf projecten dan terugga naar home, komt er te staan: /home/index.php
Is de volgorde dan weer niet goed?
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




