Toon posts:

[.htaccess] Variabelen uit URL

Pagina: 1
Acties:

Verwijderd

Topicstarter
ok. ik ben er al een tijd mee bezig geweest (ook de search gebruikt), maar ik krijg 't net niet voor elkaar.

Ik heb een website met meerdere talen (nl, en, de) en meerdere onderdelen (producten, nieuws, etc). Onafhankelijk van de taal moet er altijd rewritten worden naar het bestand van het onderdeel in de root (in het geval van onderdeel Producten dus naar /producten.php). Hierbij moet wel altijd de Taal worden meegegeven en sóms een id. Een daar ligt het probleem...

Geval 1
De volgende URL:
www.mijnsite.nl/nl/producten/
moet naar de volgende pagina gaan:
www.mijnsite.nl/producten.php?Taal=nl

Geval 2
en de volgende URL:
www.mijnsite.nl/nl/producten/Dit_is_een_titel/32
moet naar de volgende pagina gaan:
www.mijnsite.nl/producten.php?Taal=nl&Product_id=32

code:
1
2
3
4
5
6
7
8
9
# mod_rewrite
RewriteEngine On

# rewrite rules
RewriteBase /

# Voor elk onderdeel het onderstaande herhalen
RewriteCond %{REQUEST_URI} ^.*/?producten/.*$
RewriteRule ^(.*)/(.*)/(.*)/([0-9]+) /producten.php?Product_id=$4&Taal=$1


In het bovenstaande geval wordt Geval 2 perfect rewritten. Maar Geval 1 gaat fout!

Hoe kan ik nu dit script wijzigen / het anders aanpakken zodat ik al mijn variabelen (taal en id) altijd in mijn bestand in de root krijg?!
Kan ik een aparte RewriteCond en RewriteRule maken voor Geval 1, waarbij Geval 2 niet rewritten wordt o.i.d.?

Ik denk graag zelf mee... Tenzij iemand zo een oplossing weet... bvd!

Verwijderd

Als het de bedoeling is om een string die bestaat uit een:
taal, gevolgd door producten/ en die evenuteel gevolgd door een id
te kunnen rewriten is dan
code:
1
^(.*)/producten/([0-9]+)?$
niet alles wat je nodig hebt? Met in $1 de taal en in $2 het id.

Verwijderd

Topicstarter
Verwijderd schreef op donderdag 24 maart 2005 @ 16:29:
Als het de bedoeling is om een string die bestaat uit een:
taal, gevolgd door producten/ en die evenuteel gevolgd door een id
te kunnen rewriten is dan
code:
1
^(.*)/producten/([0-9]+)?$
niet alles wat je nodig hebt? Met in $1 de taal en in $2 het id.
code:
1
RewriteRule ^(.*)/producten/([0-9]+)?$ /producten.php?Taal=$1&Product_id=$2

Met de URLs:
www.mijnsite.nl/nl/producten/34/
en
www.mijnsite.nl/nl/producten/
werkt dit perfect.

Maar nu nog een titel erbij, in de volgende vorm:
www.mijnsite.nl/nl/producten/34/Hier_een_titel/
of
www.mijnsite.nl/nl/producten/Hier_een_titel/34/

Waarbij www.mijnsite.nl/nl/producten ook nog moet blijven werken.
Hoe los ik dat op? Deze titel hoeft overigens verder niet meegestuurd te worden, puur voor zoekmachines e.d.

[ Voor 5% gewijzigd door Verwijderd op 24-03-2005 17:19 ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Haal de $ eens weg aan het eind.

En lees een tutorial over regular expressions en rewrite rules.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Je kunt natuurlijk ook de titel achter je /id zetten. Dan hoef je daar verder niks mee te doen binnen je rewrite. Voor het indexeren door search engines lijkt het me niks uit te maken.

Verwijderd

Topicstarter
Ik heb de $ weggehaald en dus de titel achter het id gezet.
Werkt perfect!

Bedankt voor jullie hulp!

Nog even het resultaat:
code:
1
RewriteRule ^(.*)/producten/([0-9]+)? /producten.php?Taal=$1&Product_id=$2
Pagina: 1