Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[.htaccess & mod_rewrite] meerdere rewrites op 1 ding

Pagina: 1
Acties:

Verwijderd

Topicstarter
He jongens,

Na gisteren me diep in PHP te hebben gestoken heb ik al een redelijk leuk siteje in elkaar gezet voor een vriend van ons pap. Hij wil een soort database met daarin allerlei soorten wijn opzetten, en nu had ik hetvolgende idee.

ik heb nu de bestanden:

/pages/wijn.php
/pages/wijn-rood.php (alle rode wijnen)
/pages/wijn-id.php (de specs page, zeg maar, met daarachter een ?id=123)

in m'n .htaccess heb ik hetvolgende gezet:

code:
1
2
RewriteRule ^wijn/([^/]+)?$ pages/wijn-$1.php
RewriteRule ^wijn/([^/]+)?$ pages/wijn-id.php?id=$1


Als ik nu /wijn/rood in typ, komt ie netjes op de rode wijn pagina, maar als ik /wijn/123 doe, dan wil ie naar wijn-123.php, maar dat is niet de bedoeling.

Ik heb al wel een soort van blogpost gevonden http://waxjelly.wordpress...ite-with-htaccess-part-2/ maar daar staat dit probleem niet echt vermeld.

Hebben jullie enig idee?

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:51
Je wilt alleen naar wijn-*.php redirecten als het bestand ook bestaat. Je kunt daarvoor een rewrite conditie opgeven.
code:
1
2
3
4
5
RewriteCond ^wijn/([^/]+)?$ -f
RewriteRule ^wijn/([^/]+)?$ pages/wijn-$1.php

RewriteCond ^wijn/([^/]+)?$ !-f
RewriteRule ^wijn/([^/]+)?$ pages/wijn-id.php?id=$1

Regeren is vooruitschuiven


Verwijderd

Topicstarter
Verdorie.. heb ik hier een volledige post gemaakt, ben ik er eigenlijk al zelf achter.

ik heb hetvolgende gedaan:

code:
1
2
RewriteRule ^wijn/([0-9]+)?$ pages/wijn-id.php?id=$1
RewriteRule ^wijn/([^/]+)?$ pages/wijn-$1.php


Omdat een ID enkel uit cijfers bestaat, vang ik eerste de cijfers af. Als het nu bijvoorbeeld ROOD is, is het geen cijfer en gaat ie dus door naar de volgende regel.

Wellicht is het niet DE manier, maar het werkt wel.

Verwijderd

Topicstarter
T-MOB schreef op woensdag 13 februari 2008 @ 20:38:
Je wilt alleen naar wijn-*.php redirecten als het bestand ook bestaat. Je kunt daarvoor een rewrite conditie opgeven.
code:
1
2
3
4
5
RewriteCond ^wijn/([^/]+)?$ -f
RewriteRule ^wijn/([^/]+)?$ pages/wijn-$1.php

RewriteCond ^wijn/([^/]+)?$ !-f
RewriteRule ^wijn/([^/]+)?$ pages/wijn-id.php?id=$1
Dit is inderdaad een betere manier.
Is het dan bijvoorbeeld ook mogelijk dat, wanneer een pagina niet bestaat ik redirect naar een aparte pagina? Ik doe dit nu gewoon door middel van php in het bestand zelf.

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:51
M'n regels kloppen niet echt bij nader inzicht -- mod rewrite blijft lastige materie. Maar in principe zijn de mogelijkheden eindeloos. Wat ik probeerde te doen was checken of er een script bestond met de naam wijn-***.php en anders rewriten naar wijn-id.php?id=***. Maar goed, wat er staat was te simple gedacht...

Regeren is vooruitschuiven


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 01:43

MueR

Admin Devschuur® & Discord

is niet lief

Misschien ben ik gek hoor, maar waarom zou je niet gewoon _alles_ behalve directe calls naar een bestaande file rewriten naar een processing script? Dat is makkelijker onderhouden dan rewrite rules.

Ik rewrite alles naar index.php, die verder zn processor include (in een map die niet toegankelijk is). De processor bepaalt aan de hand van het pad ($_SERVER['REQUEST_URI']) wel welke templates hij verder moet gaan laden.

Anyone who gets in between me and my morning coffee should be insecure.


  • Xcalibur
  • Registratie: Augustus 2002
  • Laatst online: 21:32
MueR schreef op woensdag 13 februari 2008 @ 22:39:
Misschien ben ik gek hoor, maar waarom zou je niet gewoon _alles_ behalve directe calls naar een bestaande file rewriten naar een processing script? Dat is makkelijker onderhouden dan rewrite rules.

Ik rewrite alles naar index.php, die verder zn processor include (in een map die niet toegankelijk is). De processor bepaalt aan de hand van het pad ($_SERVER['REQUEST_URI']) wel welke templates hij verder moet gaan laden.
Dat doe ik ook inderdaad :)
En alles wat niet bestaat komt netjes op een errorpagina uit

Designer | Developer | Director | Photographer | LARPer | Geek | Male | 39


Verwijderd

Topicstarter
Ik ben net nieuw op het gebied van PHP en ik vond zelf wel dat ik al netjes op weg was, maar het kan natuurlijk altijd beter.
Omdat ik gehoord had dat het met .htaccess mogelijk was om url's er beter uit te laten zien, ben ik dat maar eens gaan gebruiken.

Maar ik sta altijd open voor handigere, simpelere, eenvoudigere (3 keer hetzelfde, haha) en betere oplossingen. Hebben jullie wellicht een link naar een tutorial waar ik jullie methode een beetje kan bekijken en ermee kan expirimenteren?

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 20-11 13:35
Xcalibur schreef op donderdag 14 februari 2008 @ 08:46:
Dat doe ik ook inderdaad :)
En alles wat niet bestaat komt netjes op een errorpagina uit
Same here - werkt ideaal :)

De code erachter is trouwens verdraaid simpel:

code:
1
2
3
4
RewriteEngine on
RewriteRule !^(favicon\.ico|templates) index.php [L]

Options -Indexes


Alles wat niet een favicon is of in de templates dir staat wordt zo gerewrite naar je index.php :Y) Even kijken naar $_SERVER['REQUEST_URI'], exploden op '/' en je weet precies waar je bezoeker naartoe wil :)

[ Voor 9% gewijzigd door FragFrog op 14-02-2008 10:51 ]

[ Site ] [ twitch ] [ jijbuis ]

Pagina: 1