Toon posts:

[Isapi_Rewrite] rule ombouwen van mod_rewrite

Pagina: 1
Acties:

Verwijderd

Topicstarter
Na lange tijd gewerkt te hebben aan een interactief nieuwsplatform op localhost (Wampserver 2.0), probeer ik vandaag de boel online te zetten. De hosting is uitbesteed, helaas aan Vevida (windows). Ik loop tegen enorm veel complicaties aan om de website werkend te krijgen zoals op localhost (apache).

Eén daarvan is de mod_rewrite om nette url's te maken.
Op localhost had ik dit in onderstaande .htaccess gezet, maar .htaccess mag niet van Vevida.


code:
1
2
3
4
RewriteEngine On
RewriteRule ^index/ index.php

RewriteRule ^nieuws/(.*)/ news.php?id=$1


Deze code werkte helemaal naar behoren en zorgde gewoon voor een url als nieuws/21/hier-de-titel.html
Het is me bij Vevida nog niet gelukt om deze RewriteRule om te bouwen tot een nieuwe, die wel werkt.

Deze wordt aangedreven via httpd.ini (volgens de voorschriften), maar ik krijg hem als noob in Isapi niet werkend. Ik ben na lang speuren op onder andere Helicontech Forum (heb óók daar een topic geopend) tot onderstaand gekomen, maar alleen maar 404's als resultaat:


code:
1
2
3
4
[ISAPI_Rewrite]
# ISAPI Rewrite Version 2.

RewriteRule ^/nieuws/(\d)/ news.php\?id=$1 [I,L]


Enig idee wat er aan bovenstaande gesleuteld moet worden? Welke richting moet ik op? Meer van dit soort ervaringen met Vevida?

[ Voor 3% gewijzigd door Verwijderd op 16-01-2010 18:15 ]


Verwijderd

Wat wil je in de id parameter naar je php bestand hebben? Alleen het id van het nieuwsbericht neem ik aan?

code:
1
2
3
4
[ISAPI_Rewrite]
# ISAPI Rewrite Version 2.

RewriteRule ^/nieuws/(\d)/ news.php\?id=$1 [I,L]
Om te beginnen matched de RewriteRule die je hier hebt staan maar op 1 getal. Als je 1 of meer getallen wil matches zal je (\d+) moeten gebruiken in plaats van (\d).

Verder weet ik niet of het nodig is, maar je regex vangt niet het gedeelte /hier-de-titel.html uit je link op. :) Daarvoor zal je de RewriteRule nog moeten uitbreiden.

Verdiep je misschien nog wat verder in regular expressions? :)

Verwijderd

Topicstarter
Ik heb inderdaad alleen maar het id nodig, en dat moeten meerder matches kunnen zijn inderdaad. Dus die d+ is in ieder geval al mooi meegenomen. Verder vang ik het gedeelte hier-de-titel.html niet op, omdat dat via mod_rewrite geen probleem was. Daar werkte de eerste code eigenlijk perfect. Ik heb zelf dus ook geen idee of dit met isapi_rewrite wel moet.

Verwijderd

Topicstarter
Ik ben nog even verder gegaan op basis van instructies van Vevida, maar na die instructies letterlijk te hebben opgevolgd (zie code hieronder) werkt de rule ook niet.

code:
1
2
RewriteCond Host: (?!www\.)([^.]+)\.domein.nl
RewriteRule (.*) /$1$2 [I,L]


Dat wil zeggen, ik heb uiteraard domeinnaam wel aangepast (maar die hoeft niet iedereen te weten ;)), en heb de httpd.ini keurig in de map /www/ gezet. Maar nog steeds geen enkel resultaat, er gebeurt gewoon niets.

Verwijderd

Hoe heb je je regel nu aangepast? En werkt deze?

Je wil het stukje "/hier-de-titel.html" niet opvangen, maar ik heb het vermoeden dat de regular expression in je RewriteRule dat wel moet matchen. Dat kan je natuurlijk even uitproberen. :)

Edit: je was me voor. :P

Volgens mij kijk je naar het verkeerde voorbeeld (namelijk om alle subdomeinen te laten werken met submappen). Heb je hier niks aan?
http://www.vevida.com/NL/service_onderwerp.asp?owid=244#961

[ Voor 31% gewijzigd door Verwijderd op 16-01-2010 19:48 . Reden: Sinisa was me voor! ]


Verwijderd

Topicstarter
Ik heb naar dat andere voorbeeld, die van subdomeinen, gekeken om te testen of er überhaupt wel iets werkt.
Die van de subdomeinen werkt in ieder geval ook niet.

Wel ben ik al verder:

code:
1
2
# Rewrite keyword-rich URLs with a product ID and a category ID
RewriteRule ^/nieuws/([0-9]+)/ /news.php?id=$1 [L]


Dit werkt perfect als ik de pagina zo aanroep: http://domein.nl/nieuws/20/
Dus het is nu inderdaad nog even figulieren met het laatste stuk, tot voor de .html

Tnx tot zover!

Verwijderd

Topicstarter
Nou, gelukt! Dank dat je me de goede richting op hebt geschopt. Voor de rest, sorry van deze forumvervuiling

Solution:
code:
1
2
[ISAPI_Rewrite]
RewriteRule ^/nieuws/([0-9]+)/(.*).html$ /news.php?id=$1 [L]

Verwijderd

Geen probleem. Top als ik je op weg heb kunnen helpen op een manier waarop je het hopelijk ook nog eens begrijpt! ;)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1