Toon posts:

voor elke map een rewrite rule?

Pagina: 1
Acties:

Verwijderd

Topicstarter
ok mensen ik heb de volgende website sructuur:

contact staat bijvoorbeeld in de map contact

http://www.website.nl/contact

fotos staan in de map uitgaan

http://www.website.nl/uitgaan/fotos/

in die mapjes staat een index.php

mijn vraag is:

moet ik voor elke map een nieuw rewrite rule schrijven?

dus bijv:

RewriteRule ^contact/(.*)/(.*)/ contact/index.php?cat=$1&id=$2
RewriteRule ^uitgaan/fotos/(.*)/ uitgaan/fotos/index.php?cat=$1&id=$2&actie=$3

en dan nog tig mappen

ik vraag het ook omdat hetgeen achter de ? ook meerdere $ kan hebben (bijv nog een $4) of hetgeen achter ^ kan veranderen in lengte

ik heb dus 'echte mappen/dirs' met een index erin

alvast bedankt

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 10:32
Bij heel veel verschillende rewrites kan het handiger zijn om 1 rewrite te maken, en die naar een php-script laten wijzen welke de juiste content pagina include.

RewriteRule (.*) /rewrite.php?requestURI=%{REQUEST_URI}

In het PHP-script kun je met de requestURI variabele gaan bepalen welke pagina je wilt gaan tonen.

Is onderhoudstechnisch alleen niet altijd heven handig.

[ Voor 26% gewijzigd door frickY op 14-10-2006 10:50 ]


Verwijderd

Topicstarter
maar het an geen kwaad om zeg 100 rules in je htacces te hebben?

Verwijderd

Nop, kan alleen zorgen dat het miss wat langzaam gaat en t is wat onoverzichtelijk

Verwijderd

Topicstarter
mod_rewrite is dus eigenlijk geschikt voor kleinere sites?met een paar categorien..niet voor grote sites met 10 categorieen + subcategorien?

  • Arjen Tempel
  • Registratie: Januari 2002
  • Niet online
Je kunt mod_rewrite ook op ingewikkelde sites gebruiken. Alleen moet je dan iets meer aandacht besteden aan het optimaliseren van je mod_rewrite rules. Dus de rules die het meest zullen matchen bovenaan met een [L]ast flag om te voorkomen dat de rest van de rules ook nog bekeken wordt.

Aangezien je op jouw site gebruik maakt van index.php bestanden in verschillende mappen, kun je de specifieke rewrite_rules voor een bepaalde map ook gewoon in een apart .htaccess bestand in diezelfde map zetten. Bij een request voor /uitgaan/fotos/123/ zal Apache eerst de rewrite_rules in de .htaccess in de root bekijken, vervolgens de rewrite_rules in /uitgaan/.htaccess en tenslotte in /uitgaan/fotos/.htaccess.

Verwijderd

Topicstarter
hmm ok..wat bedoel je hiermee?:

Dus de rules die het meest zullen matchen bovenaan met een [L]ast flag om te voorkomen dat de rest van de rules ook nog bekeken wordt.

Verwijderd

Maak één of een paar rewrite rules die alle requests door een enkel php script sturen. Dat script laat je vervolgens de URL analyseren om de juiste pagina terug te laten geven.

  • Kippenijzer
  • Registratie: Juni 2001
  • Laatst online: 11-02 20:53

Kippenijzer

McFallafel, nu met paardevlees

Anders kun je ook altijd nog met RewriteMap gaan werken, en daarin dan gewoon de verschillende matchings zetten.

  • Arjen Tempel
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op zaterdag 14 oktober 2006 @ 13:49:
hmm ok..wat bedoel je hiermee?:

Dus de rules die het meest zullen matchen bovenaan met een [L]ast flag om te voorkomen dat de rest van de rules ook nog bekeken wordt.
Stel dat je de volgende 2 rewriterules hebt:
code:
1
2
/fotoalbum/(.*)/ /fotoalbum.php?id=$1
/fotos/(.*)/ /foto.php?id=$1
Als een fotoalbum pagina bijv. 20 foto's bevat, dan wordt de rewrite_rule voor fotos 20x zo vaak aangeroepen als die voor een fotoalbum. Maar omdat de fotos rule onderaan staat, moet Apache voor elke foto request steeds eerst controleren of de fotoalbum niet toevallig van toepassing is.
Een betere volgorde zou dus zijn:
code:
1
2
/fotos/(.*)/ /foto.php?id=$1 [L]
/fotoalbum/(.*)/ /fotoalbum.php?id=$1
Als Apache nu een request voor een foto krijgt matched meteen de eerste regel. En omdat er een [L] flag achter staat weet de mod_rewrite engine dat hij de rest van de regels niet meer hoeft te bekijken.
Pagina: 1