[ISAPI] Klopt dit rewrite script???

Pagina: 1
Acties:
  • 48 views sinds 30-01-2008

  • LeMerchant
  • Registratie: Februari 2002
  • Laatst online: 22-07-2020

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
Kben nu bezig om dynamische urls statisch te laten lijken.
Ik gebruik dit programma: http://www.qwerksoft.com/products/iisrewrite/

Op die website staan ook wat examples:

Example:
To rewrite this URL:

/download/17269/banner.gif

to

/download.asp?id=17269

Use the following RewriteRule"

RewriteRule ^download/(.*)/.* /download.asp?id=$1


Ik heb dit script een beejte aangepast, maar zou dit werken??


#My Configuration File
RewriteEngine On
RewriteRule ^main/(.*)/.* /main.php?page=$2


Het is volgens mij zo dat $1 voor nummers is en $2 voor woorden. Want et is namelijk niet zo dat er met 'id' gewerkt wordt, dus id=12 bijv. maar, zoals hieronder te zien is, page=home. Het is dus de bedoeling dattie dit gaat doen:

http://www.eensite.nl/main/home i.p.v.

http://www.eensite.nl/main.php?page=home

Anywayzz, werkt dit met het bovenstaande script wat ik veranderd heb?

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 06-09 00:14

DizzyWeb

Ondertiteld

Op maandag 15 april 2002 11:55 schreef LeMerchant het volgende:
Kben nu bezig om dynamische urls statisch te laten lijken.
Ik gebruik dit programma: http://www.qwerksoft.com/products/iisrewrite/

Op die website staan ook wat examples:

Example:
To rewrite this URL:

/download/17269/banner.gif

to

/download.asp?id=17269

Use the following RewriteRule"

RewriteRule ^download/(.*)/.* /download.asp?id=$1


Ik heb dit script een beejte aangepast, maar zou dit werken??


#My Configuration File
RewriteEngine On
RewriteRule ^main/(.*)/.* /main.php?page=$2


Het is volgens mij zo dat $1 voor nummers is en $2 voor woorden. Want et is namelijk niet zo dat er met 'id' gewerkt wordt, dus id=12 bijv. maar, zoals hieronder te zien is, page=home. Het is dus de bedoeling dattie dit gaat doen:

http://www.eensite.nl/main/home i.p.v.

http://www.eensite.nl/main.php?page=home

Anywayzz, werkt dit met het bovenstaande script wat ik veranderd heb?
Nee, ik denk dat je weldegelijk $1 moet hebben.
als je naar die rule kijkt:
code:
1
RewriteRule ^main/(.*)/.* /main.php?page=$2

Dan is dat eerste sterretje $1, en de 2e $2
Dus dan zou jij moeten hebben:
code:
1
RewriteRule ^main/.* main.php?page=$1

Correct me if I'm wrong :P

edit:

I was wrong :P

  • LeMerchant
  • Registratie: Februari 2002
  • Laatst online: 22-07-2020

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
mja volgens mij ook want kijk:

/classcalendar.asp?c=$1&m=$2

/classcalendar?c=chem101&m=June

$2 is voor 'june' dus...

maar de rest is wel goed toch?

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
$1 $2 $etc zijn voor de captures, dus de gedeelten van je regex tussen haakjes.

Bijvoorbeeld:
code:
1
2
3
RewriteRule ^download/(.*)/(.*) /download.asp?id=$1
                ^$1^
                   ^$2^

  • LeMerchant
  • Registratie: Februari 2002
  • Laatst online: 22-07-2020

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
hmz...aha dus $1 en $2 enz. hebben geen specifieke betekenissen opzich. Tis gewoon zo als je 'id' gebruikt en verder nix, kun je $1 gebruiken. Maar doe je 'id' en nog meer dan gebruik je $1 (voor de id) en $2 voor dat wat erna komt. Zie ik et zo goed?

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 06-09 00:14

DizzyWeb

Ondertiteld

Zoiets ja, die regex pikt er een aantal stukken uit, en dat zijn die variabelen. 1 is de eerste, 2 is de 2e... etc. :)

  • LeMerchant
  • Registratie: Februari 2002
  • Laatst online: 22-07-2020

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
ok dus 1 sterretje is dan ook voldoende? Dus zo:

#My Configuration File
RewriteEngine On
RewriteRule ^main/.* /main.php?page=$1

of moeten er om die .* wel ( ) staan??

  • LeMerchant
  • Registratie: Februari 2002
  • Laatst online: 22-07-2020

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
ik kwam dit ook nog tegen bij de uitleg:

http://www.somesite.com/realestateagent.asp?id=124873

IISRewrite can allow you to use the following URL instead:

http://www.somesite.com/agents/124873/index.htm

A simple configuration file:

RewriteEngine On
RewriteRule /agents/(.*)/.* /realestateagent.asp?id=$1

Hier zie je dat er WEL twee sterretjes staan terwijl er maar een 'id' is, $1 dus. En is et trouwens zo dat 'agents' een bestaande directory is, of wordt deze aangemaakt. Of is het zo dat in de directory 'agents' het bestand realestateagent.asp staat? als deze in de root zou staan, hoe zet je dat er dan neer? gewoon met een '/'? dus:

RewriteRule /(.*)/.* /realestateagent.asp?id=$1

Verder is het zo dat voor 'agents' een '/' staat. Wat is het verschil als er een '^' zou staan?

  • tomato
  • Registratie: November 1999
  • Niet online
Lees eens wat documentatie over regular expressions (je zult dan heel snel zien dat dit vrij basic vragen zijn). Ik moet inderdaad toegeven dat daar in de meeste artikelen over mod_rewrite niet op in gegaan wordt.

  • LeMerchant
  • Registratie: Februari 2002
  • Laatst online: 22-07-2020

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
ok kep ff wat dingen gevonden, sommige dingen zijn nog niet echt helemaal duidelijk maarja. De (.*) staat volgens mij voor een directory en /.* voor 'alles' dus (.*)/.* zou zijn 'alles' in die directory. Alleen weet ik nog niet hoe je aangeeft als een bestand in de rootdir staat.

RewriteRule /agents/(.*)/.* /realestateagent.asp?id=$1

Hierbij isset volgens mij zo dat je aangeeft dat realestateagent.asp in de /agents directory staat. Maar wat als realestateagent.asp in de root staat?

  • tomato
  • Registratie: November 1999
  • Niet online
Bekijk eens wat ^ en $ in een regex betekenen.

Kijk daarnaast ook eens naar de RewriteBase directive.

  • LeMerchant
  • Registratie: Februari 2002
  • Laatst online: 22-07-2020

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
RewriteBase geeft dan volgens mij aan waar je spul in staat dus inet geval et in de root staat zou je dan dit moeten doen? :

RewriteBase /

  • tomato
  • Registratie: November 1999
  • Niet online
Nu nog ^ erbij gebruiken en dan komt het helemaal goed. Overigens is het gebruik van RewriteBase (zeker in het geval van de root) niet noodzakelijk.

  • LeMerchant
  • Registratie: Februari 2002
  • Laatst online: 22-07-2020

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
aha dus:

RewriteBase ^/

Voobeeld 1:

RewriteEngine On
RewriteRule /main/.* /main.php?page=$1

Voorbeeld 2:

RewriteEngine On
RewriteBase ^/
RewriteRule /main/.* /main.php?page=$1


Ok dus nu isset toch dat, zoals in voorbeeld 2 te zien is, hij de main.php pakt uit de root (wat is aangegeven met RewriteBase). En is de output dan /main/pagina1 of /main/pagina2 enz...?


edit:


Voorbeeld 3:

RewriteEngine On
RewriteBase ^/
RewriteRule /main/.* /main.php?page=$1
RewriteRule /main(.*)\.html /main.php\?page=$1

Klopt het dat de laatste regel (denk ik) automatisch .html achter de pagina's zet?
Dus je had /main/pagin1 maar dat wordt dan /main/pagina1.html


  • tomato
  • Registratie: November 1999
  • Niet online
De ^ gebruik je in een rule (omdat daar een regular expression verwacht wordt) en niet in je RewriteBase. Dus bijvoorbeeld:
code:
1
2
RewriteBase /mydir/
RewriteRule ^hoi.html$ hoi.php

De ^ geeft het begin van een string aan. Dit zorgt ervoor dat in dit geval een request voor '/mydir/jahoi.html' of '/mydir/hoi/hoi.html' niet gerewrite wordt, maar een request voor '/mydir/hoi.html' wel.
De $ doet hetzelfde als een ^ maar, match het einde van een string.

Dus deze
code:
1
RewriteRule ^hoi.html$ hoi.php

zonder een RewriteBase zal alleen 'hoi.html' in de root rewriten. Een request voor bijvoorbeeld '/dir/hoi.html' matcht niet omdat de ^ niet direct voor 'hoi' matcht (er zit nog 'dir/' tussen.

De betekenis van ^ en $ wordt overigens in de eerste alinea van de meeste regex tutorials besproken...

  • LeMerchant
  • Registratie: Februari 2002
  • Laatst online: 22-07-2020

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
aha dus zonder een RewriteBase gaatie er automatisch vanuit dat de bestanden in de root staan?


Voorbeeld 3-A

RewriteEngine On
RewriteBase ^/
RewriteRule /main/.* /main.php?page=$1
RewriteRule /main(.*)\.html /main.php\?page=$1

Voorbeeld 3-B


RewriteEngine On
RewriteRule ^main/.* /main.php?page=$1
RewriteRule ^main(.*)\.html$ /main.php\?page=$1

Ok...zou de syntax zoals deze in voorbeeld 3-B staat werken? Of staat er nog iets niet goed. Correct me if im wrong :)

  • tomato
  • Registratie: November 1999
  • Niet online
LeMerchant:
code:
1
2
3
RewriteEngine On
RewriteRule ^main/.* /main.php?page=$1
RewriteRule ^main(.*)\.html$ /main.php\?page=$1
Ik heb eigenlijk nog nooit iets met mod_rewrite gedaan, dus kijk me d'r niet op aan, maar ik zou denken zoiets (als ik goed begrijp wat je wilt):
code:
1
2
RewriteEngine On
RewriteRule ^main/([^.]+)(\.html)?$ /main.php?page=$1

[edit] Ik zou zeggen, probeer eens het een en ander :)

  • LeMerchant
  • Registratie: Februari 2002
  • Laatst online: 22-07-2020

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
Op maandag 15 april 2002 16:02 schreef tomato het volgende:
code:
1
2
RewriteEngine On
RewriteRule ^main/([^.]+)(\.html)?$ /main.php?page=$1
euh... :?

Anywayzz de bedoeling:

http://www.eensite.nl/main.php?page=home

http://www.eensite.nl/main/home.html

dus...ok?

  • tomato
  • Registratie: November 1999
  • Niet online
tomato: [edit] Ik zou zeggen, probeer eens het een en ander :)
Ik heb niet zo'n zin om kant en klare scripts te gaan maken. Zelf ga ik ze niet testen en als ze niet door iemand anders getest worden heb ik geen idee wat er mee mis zou kunnen zijn. Is er uberhaupt iets mis met het laatste voorbeeld dat ik je gaf :?

  • LeMerchant
  • Registratie: Februari 2002
  • Laatst online: 22-07-2020

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
Op maandag 15 april 2002 16:12 schreef tomato het volgende:
Is er uberhaupt iets mis met het laatste voorbeeld dat ik je gaf :?
Sja dat weet ik dus niet :P ik snap die syntax niet echt. Kben ook maar een newbie in dit soort dingen, dus vandaar

  • tomato
  • Registratie: November 1999
  • Niet online
LeMerchant: Sja dat weet ik dus niet :P ik snap die syntax niet echt. Kben ook maar een newbie in dit soort dingen, dus vandaar
Op maandag 15 april 2002 13:26 schreef tomato het volgende:
Lees eens wat documentatie over regular expressions (je zult dan heel snel zien dat dit vrij basic vragen zijn).
Op maandag 15 april 2002 14:56 schreef tomato het volgende:
Bekijk eens wat ^ en $ in een regex betekenen.

Kijk daarnaast ook eens naar de RewriteBase directive.
Met dit laatste bedoel ik dus ook de Apache documentatie.
Op maandag 15 april 2002 15:34 schreef tomato het volgende:
De betekenis van ^ en $ wordt overigens in de eerste alinea van de meeste regex tutorials besproken...
Op maandag 15 april 2002 16:02 schreef tomato het volgende:
Ik zou zeggen, probeer eens het een en ander :)
Op maandag 15 april 2002 16:12 schreef tomato het volgende:
Ik heb niet zo'n zin om kant en klare scripts te gaan maken. Zelf ga ik ze niet testen en als ze niet door iemand anders getest worden heb ik geen idee wat er mee mis zou kunnen zijn.
* tomato .... zucht

  • LeMerchant
  • Registratie: Februari 2002
  • Laatst online: 22-07-2020

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
tis bijna 17.00 hoor dusseuh dan heb je ff rust :)
morgen ben ik er denk ik wel weer :z

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
[topic=466114]
[topic=465061]
[topic=464023]

Ben je er nu nog niet uit? Na al deze topics heb je werkelijk nog geen idee wat een regexp. is he?

Als ik jou was zou ik dat eerst uitzoeken.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

zie Glimi

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.