Toon posts:

[IIS] URL rewriting als onder Apache *

Pagina: 1
Acties:
  • 198 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hello Tweakers,

Allereerst complimenten over de tweakers.net website.

Ik heb hier een vraagje over: Wanneer ik op jullie hoofdpagina naar een nieuwsitem navigeer dan staat er in de adresbalk altijd aan het eind een nummer in plaats van een bestand met extensie. (dus bv. 33576 ipv nieuws.asp?i=33576) Dit nummer is naar mijn idee ook geen map. Je kunt alle denkbare extensies achter het nummer zetten, de pagina wordt altijd juist aangeroepen. Wat is dat nummer? een soort object o.i.d.?

Ik vraag het met de volgende reden: Ik ben voor mijn werk een imode site aan het ontwikkelen voor ePlus (operator in Duitsland). ePlus werkt met een systeem wat https-post-requests verstuurt naar onze webserver (bijvoorbeeld wanneer een bezoeker zich voor onze dienst aanmeldt). Deze requests MOETEN volgens hun systeem naar een object verstuurd worden wat geen extensie bevat, anders komt de xml niet aan. (ze sturen de requests dus naar http://www.x.nl/site/notify in plaats van http://www.x.nl/site/notify.asp). Het werken met een map genaamd 'notify' en hierin een default.asp werkt ook niet omdat de webserver dan automatisch een '/' achter notify zet en de xml dan ook niet doorkomt.

ePlus heeft me verteld dat een andere partner van hen (die -net als ons- werkt met Windows2003 en IIS) dit opgelost heeft door een zgn. DLL Filter te bouwen die deze requests kan afhandelen. Ze kunnen me zelf echter niet vertellen hoe dit werkt omdat ze alleen ervaring met UNIX/Linux hebben en kunnen me ook niet de contactgegevens van deze partner geven.

Kunnen jullie een tipje van de sluier oplichten hoe jullie bovenstaand siteonderdeel gebouwd hebben en of dit ook werkzaam zal zijn voor mijn probleem?

Alvast bedankt voor jullie reactie!

Met vriendelijke groet,

Maarten Onderwater

  • kamerplant
  • Registratie: Juli 2001
  • Niet online
Waarschijnlijk is dit met een Apache .htaccess bestand gedaan wat mod_rewrite gebruikt:

Voorbeeld:
quote: .htaccess
Options -MultiViews
RewriteEngine On
RewriteRule ^getimg/([a-z0-9A-Z._]*)$ getimg.php?img=$1
In dit voorbeeld, als je www.bla.org/getimg/blabla.jpg invoert, wordt het www.bla.org/getimg.php?img=blabla.jpg, zonder dat de gebruiker dit doorheeft.

[ Voor 14% gewijzigd door kamerplant op 29-07-2004 12:27 ]

🌞🍃


  • Vurabes
  • Registratie: December 2001
  • Laatst online: 09-02 12:02

Vurabes

Homo Sapiens Informaticus

Zo kan het ook:


code:
1
Options +MultiViews

PHP:
1
list($parameter1,parameter2) = explode("/", substr($PATH_INFO,1));

Dat vind ik zelf handiger, maar dat hangt natuurlijk van je eigen smaak af...

[ Voor 18% gewijzigd door Vurabes op 29-07-2004 12:36 ]

On a clear day you can C#


Verwijderd

Topicstarter
Hoi DataBeest & koenhumblet,

Bedankt voor jullie snelle reply!

Ik maak echter gebruik van een Windows2003 machine i.c.m. IIS.

Wat adviseren jullie?

  • kamerplant
  • Registratie: Juli 2001
  • Niet online
Mja, ook voor de manier van koenhumblet is Apache nodig. Je zult dus even moeten zoeken welke mogelijkheden ISS hiervoor biedt. ;)

🌞🍃


  • Wouter Tinus
  • Registratie: Oktober 1999
  • Niet online

Wouter Tinus

Whee!

Het spijt me zeer, maar dit is een software/programmeervraag en geen feedback op de frontpage. Anders kun je hier straks ook wel vragen over CSS, javascript, PHP, MySQL etc. etc. gaan stellen "omdat T.net het ook gebruikt". Zo werkt het niet op GoT, en dus verplaats ik deze naar P&W.

Professioneel Hyves-weigeraar


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je hebt een aantal opties, heb je volledig beheer over de webserver?

Oops! Google Chrome could not find www.rijks%20museum.nl


Verwijderd

Topicstarter
Ja ik heb volledig beheer.

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 14:07
In de P&W Faq staat: Ik wil index.php?piet=1&sjaak=3 vervangen door index/1/3. Hoe doe ik dat?

Ik denk dat daar genoeg informatie staat om je opgang te helpen.

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
De beste oplossing is dan een ISAPI filter installeren, [google=url rewrite iis] geeft je denk ik wel genoeg voorbeelden. Kosten een tiental tot honderd euro maar dan heb je een goede oplossing.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Sybr_E-N schreef op 29 juli 2004 @ 13:16:
In de P&W Faq staat: Ik wil index.php?piet=1&sjaak=3 vervangen door index/1/3. Hoe doe ik dat?

Ik denk dat daar genoeg informatie staat om je opgang te helpen.
dat gaat niet over IIS :)

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Billie
  • Registratie: Januari 2003
  • Laatst online: 23-05 07:55
Sybr_E-N schreef op 29 juli 2004 @ 13:16:
In de P&W Faq staat: Ik wil index.php?piet=1&sjaak=3 vervangen door index/1/3. Hoe doe ik dat?

Ik denk dat daar genoeg informatie staat om je opgang te helpen.
Ook voor IIS? ;)

Misschien dat de TS hier iets mee kan. :)

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 14:07
P_de_B schreef op 29 juli 2004 @ 13:17:
[...]


dat gaat niet over IIS :)
Moet dat dan? Het idee is (ongeveer) hetzelfde alleen het platform is anders.

  • Yoeri
  • Registratie: Maart 2003
  • Niet online

Yoeri

O+ Joyce O+

(overleden)
http://www.isapirewrite.com/

That should do the trick i guess :)

Een mod_rewrite-systeem voor IIS, "een dll die die requests afvangt" dus zoiets zullen die anderen ook wel gebruikt ehbben :p

Er is zelfs een gratis versie van als ik me niet vergis

[ Voor 14% gewijzigd door Yoeri op 29-07-2004 13:21 ]

Kijkje in de redactiekeuken van Tweakers.net
22 dec: Onze reputatie hooghouden
20 dec: Acht fouten


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 22-05 23:32

alienfruit

the alien you never expected

Een DLLISAPI Filter maken voor IIS is niet zo moeilijk hoor, ik zal eens kijken of me conference paper er over kan vinden :):)

Naja, mijn grote vriend DrBob heeft al wat code snippets voor Delphi: http://www.drbob42.first-web.net/tdm/constr80.zip en
http://www.drbob42.first-web.net/tdm/constr79.zip

[ Voor 47% gewijzigd door alienfruit op 29-07-2004 13:24 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Volgens mij zijn er geen gratis mod-rewrite-varianten voor IIS, en anders wil ik nu een link hebben :+

Geinige last-resort optie: Apache op poort 80 draaien met mod_rewrite en vervolges met mod_proxy de rewritten URL's doorsturen naar een IIS op port 81 :+

* curry684 gaat voor die laatste optie om Outlook Web Access te kunnen draaien op een Win2k3 bak met Apache.

Professionele website nodig?


  • The Lord
  • Registratie: November 1999
  • Nu online
W2k3 & IIS 6 betekent ook .NET Framework 1.1

Microsoft heeft een aantal goede artikelen hoe je daarmee makkelijk een DLL kan maken in managed code (voorbeelden voor C# en VB.NET) welke URL re-writes uitvoert. Zoek op MSDN site van MS dus.

Geheel gratis en voor niets dus, zolang maar een beetje weet wat je doet.

[ Voor 15% gewijzigd door The Lord op 29-07-2004 13:33 ]

geeft geen inhoudelijke reacties meer


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 22-05 23:32

alienfruit

the alien you never expected

Ik heb een rewriter die een RegEX tegen een request_uri, en dan forward naar een bepaalde file en/of url :+

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
The Lord schreef op 29 juli 2004 @ 13:31:
W2k3 & IIS 6 betekent ook .NET Framework 1.1

Microsoft heeft een aantal goede artikelen hoe je daarme makkelijk een DLL kan maken welke URL re-writes uitvoert.

Geheel gratis en voor niets dus, zolang maar een beetje weet wat je doet.
Als je hiermee niet ISAPI filters bedoeld moet je wel _alle_ requests door aspnet_wp.exe af laten handelen. Anders gaat www.domein.nl/map/anderemap/10 niet goed, die geeft dan een 404 error.
Ik heb net een semi url rewriting methode gebruikt, waarbij domein/eenpagina.aspx eigenlijk gaat naar domein/default.aspx?paginanaam=eenpagina.aspx. Dit werk dus alleen bij .aspx extensies.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 22-05 23:32

alienfruit

the alien you never expected

Er is toch een ASP.NET ISAPI filter, wordt deze altijd als eerste uitgevoerd buiten de volgorde die je gedefinieerd hebt voor je website?

[ Voor 58% gewijzigd door alienfruit op 29-07-2004 14:02 ]


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
alienfruit schreef op 29 juli 2004 @ 13:59:
Er is toch een ASP.NET ISAPI filter, wordt deze altijd als eerste uitgevoerd buiten de volgorde die je gedefinieerd hebt voor je website?
Volgens mij is dat er niet. Een artikel op msdn over url rewriting bracht ook de door mij genoemde bezwaren naar voren, als daar een oplossing voor zou zijn hadden ze het daar ook wel genoemd denk ik.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 22-05 23:32

alienfruit

the alien you never expected

aspnet_filter.dll en aspnet_isapi.dll zijn er wel, naja eens uitzoeken als ik tijd heb :)

Verwijderd

Topicstarter
Ik heb wel een geinig artikel gevonden over url rewriting middels ASP.NET.

http://msdn.microsoft.com...spp/html/urlrewriting.asp

Maar wel heftige stof :-)

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Verwijderd schreef op 29 juli 2004 @ 15:38:
Ik heb wel een geinig artikel gevonden over url rewriting middels ASP.NET.

http://msdn.microsoft.com...spp/html/urlrewriting.asp

Maar wel heftige stof :-)
Dat werkt dus alleen als de pagina wel de .aspx extensie heeft of je alle requests door aspnet_wp.exe laat afhandelen
When a request comes in for /2004/03/19.aspx, IIS notes the .aspx extension and routes the request to the ASP.NET engine. As the request moves through the ASP.NET engine's pipeline, the URL will get rewritten to ShowBlogContent.aspx?year=2004&month=03&day=19 and the visitor will see those blog entries for March 19, 2004. But what happens when the user navigates to /2004/03/? Unless there is a directory /2004/03/, IIS will return a 404 error. Furthermore, there needs to be a Default.aspx page in this directory so that the request is handed off to the ASP.NET engine.

So with this approach, you have to manually create a directory for each year in which there are blog entries, with a Default.aspx page in the directory. Additionally, in each year directory you need to manually create twelve more directories—01, 02, …, 12—each with a Default.aspx file. (Recall that we had to do the same thing—add a /Products/ directory with a Default.aspx file—in the previous demo so that visiting /Products/ correctly displayed ListCategories.aspx.)

Clearly, adding such a directory structure can be a pain. A workaround to this problem is to have all incoming IIS requests map to the ASP.NET engine. This way, even if when visiting the URL /2004/03/, IIS will faithfully hand off the request to the ASP.NET engine even if there does not exist a /2004/03/ directory. Using this approach, however, makes the ASP.NET engine responsible for handling all types of incoming requests to the Web server, including images, CSS files, external JavaScript files, Macromedia Flash files, and so on.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:50

gorgi_19

Kruimeltjes zijn weer op :9


<add verb="*" path="*.asp" type="System.Web.HttpForbiddenHandler"/>
Uit de machine.config? :?
Using this approach, however, makes the ASP.NET engine responsible for handling all types of incoming requests to the Web server, including images, CSS files, external JavaScript files, Macromedia Flash files, and so on.
En daar heb je dan vervolgens de StaticFileHandler voor, waarbij je zelfs met wat omwegen ook nog gebruik kan maken van outputcache. :) Sowieso door deze handler te gebruiken beperk je erg de belasting, als die er al significant is. Enige nadeel is een beetje vreemd gedrag van deze handler, geloof ik.
http://dotnetguy.techieswithcats.com/archives/003114.shtml

[ Voor 22% gewijzigd door gorgi_19 op 29-07-2004 15:48 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Zoals bovenin al staat: ISAPI_Rewrite (http://www.isapirewrite.com)
Ik gebruik zelf de Lite-versie. Deze is gratis en werkt perfect.
Werkt overigens met regular expressions.

[ Voor 14% gewijzigd door Verwijderd op 29-07-2004 15:54 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Verwijderd schreef op 29 juli 2004 @ 15:53:
Zoals bovenin al staat: ISAPI_Rewrite (http://www.isapirewrite.com)
Ik gebruik zelf de Lite-versie. Deze is gratis en werkt perfect.
Werkt overigens met regular expressions.
Zonder regular expressions is het niet echt handig he ;)

Wat overigens echt zaad is aan die lite dus is dat ie geen vhosts ondersteunt :/

* curry684 gaat wellicht toch maar eens een keer een ISAPI-filter hiervoor schrijven...

Professionele website nodig?


Verwijderd

Zonder regular expressions is het niet echt handig he ;)
Ik ben ze wel tegen gekomen. Die ondersteunen dan alleen de wildcards ? en *
Wat overigens echt zaad is aan die lite dus is dat ie geen vhosts ondersteunt :/
Ik heb de Lite-versie draaien op meerdere sites. Je kunt met "RewriteCond Host" dan filteren op hostnaam. Zo staan bij mij in de ini-file een aantal instellingen die ik voor alle sites wil laten gelden en een aantal per site.

Verwijderd

Topicstarter
Ohja Gracioso? Kun je me een voorbeeldje laten zien hoe je dat voor elkaar gekregen hebt? thnx!

Verwijderd

Ohja Gracioso? Kun je me een voorbeeldje laten zien hoe je dat voor elkaar gekregen hebt? thnx!
Een voorbeeld van dit bedoel je?
code:
1
2
3
4
5
6
7
#  SITE 1: rss.xml of atom.xml => /rss/articles.xml op Site 3
RewriteCond  Host: .*www\.site1\.com.*
RewriteRule  .*(atom.xml|rss.xml) http\://www\.site3\.net/rss/articles\.xml [I,R,L]

#  SITE 2: rss.xml of atom.xml => /rss/articles.xml op Site 3
RewriteCond  Host: .*www\.site2\.com.*
RewriteRule  .*(atom.xml|rss.xml) http\://www\.site3\.net/rss/articles\.xml [I,R,L]
Pagina: 1