Versio

.htaccess triggert niet

Overzicht Reageren

Justin S

Justin S

23/06/2010 10:39:29
Quote Anchor link
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 (= / ).

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
RewriteEngine on  
RewriteRule ^projecten/([0-9]+)/?$ projecten.php?id=$1


Alvast bedankt!
Justin
Gewijzigd op 23/06/2010 10:42:08 door Justin S
 
PHP hulp

PHP hulp

24/05/2012 22:25:10
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Arjan -

Arjan -

23/06/2010 20:32:35
Quote Anchor link
Probeer eens een [L] toe te voegen aan het einde van de regel, dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
RewriteEngine On

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 -
 
Justin S

Justin S

23/06/2010 20:38:01
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
RewriteEngine on  
RewriteRule ^projecten/([0-9]+)$ projecten.php?id=$1 [L]
 
Arjan -

Arjan -

23/06/2010 20:39:10
Quote Anchor link
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?
Gewijzigd op 23/06/2010 20:40:01 door Arjan -
 
Justin S

Justin S

23/06/2010 20:41:11
Quote Anchor link
Het is niet opkoers.nl, dit is de huidige site die vervangen gaat worden.
Probeer: http://environment.visual-masters.nl/opkoers/
 
Arjan -

Arjan -

23/06/2010 20:42:29
Quote Anchor link
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?
 
Justin S

Justin S

23/06/2010 20:44:14
Quote Anchor link
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?
Gewijzigd op 23/06/2010 20:45:33 door Justin S
 
Arjan -

Arjan -

23/06/2010 20:47:07
Quote Anchor link
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.
Gewijzigd op 23/06/2010 20:47:43 door Arjan -
 
Justin S

Justin S

23/06/2010 20:53:10
Quote Anchor link
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?
 
Arjan -

Arjan -

23/06/2010 20:58:25
Quote Anchor link
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>

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/.


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 -
 
Justin S

Justin S

23/06/2010 21:02:02
Quote Anchor link
Duidelijk, en m'n plaatjes moeten wel met volledige URL ingevoerd worden dus :-).
Thanks!
 
Arjan -

Arjan -

23/06/2010 21:03:23
Quote Anchor link
Ja, leer jezelf aan om altijd absolute paden te gebruiken. Dit voorkomt problemen met rewrites, etc.
 
Justin S

Justin S

23/06/2010 21:09:49
Quote Anchor link
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?
Gewijzigd op 23/06/2010 21:17:12 door Justin S
 
Justin S

Justin S

24/06/2010 18:04:25
Quote Anchor link
Ik probeer bovenstaande te bereiken, maar de onderstaande code is geen succes.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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]


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.
 
Piet Verhagen

Piet Verhagen

24/06/2010 20:20:17
Quote Anchor link
Je zou zoieso regel 6 en 7 om moeten draaien lijkt me. En
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
(.*)

kunnen aanpassen naar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
(.+)

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
 
Justin S

Justin S

24/06/2010 20:29:45
Quote Anchor link
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?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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]
 
Piet Verhagen

Piet Verhagen

24/06/2010 20:34:35
Quote Anchor link
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?
 
Justin S

Justin S

24/06/2010 22:39:52
Quote Anchor link
jawel, maar de url is niet goed herschreven. Hier hoort enkel /home/ te staan, en niet /home/index.php.
 
Piet Verhagen

Piet Verhagen

24/06/2010 23:03:48
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<a href="/home/index.php">klik</a>

maar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<a href="/home/">klik</a>

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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<a href="/home/index.php">klik</a>

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)
PHP script in nieuw venster Selecteer het PHP script
1
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]

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)
PHP script in nieuw venster Selecteer het PHP script
1
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
  }
}

?>
Gewijzigd op 24/06/2010 23:23:48 door Piet Verhagen
 



Overzicht Reageren

Get Adobe Flash player