Beste SD-ers,
Ik ben nu al enige tijd aan het rommelen met rewriten en/of multiview. Maar ik kom er niet uit. Het volgende probleem doet zich voor:
Normaal heb je zo'n pagina : www.site.nl/index.php
Nu weet ik dat je voor multiview in je .htaccess de volgende regel moet gebruiken:
Mijn pagina's komen er dan als volgt uit te zien: www.site.nl/index/PHP Code:
Options Indexes FollowSymLinks MultiViews All
Nou op zich een leuk resultaat, maar nu liep ik tegen het volgende probleem aan. Want wat nou als ik een pagina heb zoals deze: www.site.nl/view.php?id=29
Dan werkt multiview volgens mij niet meer en moet ik gebruik maken van de rewrite mod. Ik heb een aantal dingen op internet er over gelezen, maar kwam er maar niet uit. Ik wil dat mijn pagina er als volgt uit komt te zien:
www.site.nl/view/29
Maar zoals eerder gezegd kom ik er niet uit, hoe ik dit precies moet doen.
Zoiets had ik al op internet gevonden, maar ik weet niet precies hoe het werkt en zou graag een precieze verklaring willen, mocht dit mogelijk zijn natuurlijk.PHP Code:
RewriteEngine On
RewriteBase /
RewriteRule ^(.+)/([0-9]+)/?$ index.php?include=$1&ID=$2
RewriteEngine On (Begrijp ik.. je zet het Rewriting proces aan)
RewriteBase / (Begrijp ik, je scheid de niveaus dmv een / (slash))
RewriteRule ^(.+)/([0-9]+)/?$ index.php?include=$1&ID=$2
ik heb geen idee... Ik denk dat de ^(.+)/([0-9]+) staat voor de id nummer ( in mijn geval ../view.php?id=29 ) echt weet ik niet hoe ik het vervolg van de regel moet aanpassen. Want ik gebruik in dit geval geen 'include', ik gebruik direct het id. Moet dit dan worden omgevormd naar: index.php?id=$2 . Dan komen bij mij gelijk de vragen op : Waar staat die $2 en $1 voor?! staat dat voor een ? (vraagteken) En dan nog een vraag, want dien ik voor elke pagina afzonderlijk zo'n regel te maken?! Want in het voorbeeld staat alleen index.php genoemd. Moet ik dan index.php, view.php, etc etc aanmaken?!
Is er iemand, die mij hierbij wil helpen?!
Stefan
Aanvullend bericht:
Heeft niemand hier tekst en uitleg?!
- Rewrite
-
16-01-2010, 12:06 #1
- Berichten
- 651
- Lid sinds
- 17 Jaar
Rewrite
Laatst aangepast door gast8208 : 16-01-2010 om 13:03 Reden: Automatisch samengevoegd.
-
-
16-01-2010, 13:35 #2
- Berichten
- 257
- Lid sinds
- 15 Jaar
Ik kan je een klein beetje op weg helpen maar alle details ken ik ook niet.
Wat betreft je RewriteBase zit je niet goed:
http://httpd.apache.org/docs/1.3/mod...ml#RewriteBase
Je voorbeeld bestaat uit 3 delen
RewriteRule ^(.+)/([0-9]+)/?$ index.php?include=$1&ID=$2
RewriteRule spreekt voor zich
Het groene gedeelte is een reguliere expressie. Het paarse gedeelte is de uiteindelijke vertaling van het groene deel.
Het ^ staat voor 'begin van de regel'
Het $ (groen) staat voor 'einde van de regel'
'.' staat voor elk karakter
'+' staat voor minimaal één keer
De haakjes eromheen betekenen dat je de uitkomst aan een variabele toekent. De eerste set haakjes aan $1, de 2e set haakjes aan $2 etc.
Dus '^(.+)/' betekent: sla alles vanaf het begin tot de eerste '/' op in de variabele $1.
In jouw voorbeeld : www.site.nl/view/29 (www.site.nl/ wordt niet meegeteld want de standaard RewriteBase is '/') komt dus in $1 de waarde 'view' te staan.
de '/' staat vervolgens niet tussen haakjes dus daar wordt niets mee gedaan.
Dan '[0-9]+': getallen van 0 t/m 9 toegestaan, moet minimaal 1x voorkomen. Hier staan weer haakjes omheen dus dat wordt in $2 gestopt.
In jouw voorbeeld: www.site.nl/view/29 wordt $2 dus '29'
Het laatste stukje '/?$' betekent dat de '/' optioneel op het einde van de regel mag voorkomen. Dus 'www.site.nl/view/29' en 'www.site.nl/view/29/' zijn beiden ok en leveren hetzelfde resultaat op.
In jouw voorbeeld wordt het vertaald naar:
index.php?include=$1&ID=$2
$1 = 'view', $2 = '29'index.php?include=view&ID=29
Met RewriteRules kun je ontzettend veel maar het kan wel ingewikkeld worden. Je moet er in iedergeval wel voor oppassen dat je geen 'loops' veroorzaakt want daar komt de server niet makkelijk uit.
Reguliere expressies: http://en.wikipedia.org/wiki/Regular...ar_ExpressionsLaatst aangepast door Ruud van der Velden : 16-01-2010 om 15:54 Reden: verduidelijking
-
16-01-2010, 13:54 #3
- Berichten
- 651
- Lid sinds
- 17 Jaar
Beste Ruud,
Bedankt voor deze duidelijke uitleg. Ik begrijp nu beter wat het inhoud en zal met deze informatie verder gaan puzzelen. Hartelijk dank voor deze goede uitleg!
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic