[IIS] ISAPI_Rewrite alles naar index.php

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Altijd met Apache servers gewerkt maar nu heb ik een IIS server waar ik de RewriteRules niet in orde krijg..

Ik wil alles naar index.php verwijzen behalve als het een bestaande file of directory is.

Apache .htaccess
code:
1
2
3
4
5
6
7
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>


Nu heb ik de volgende httpd.ini (tenminste na onderzoek moet ik httpd.ini gebruiken denk ik):
code:
1
2
[ISAPI_Rewrite]
RewriteRule . /index.php [L]


Bovenstaande httpd.ini werk dus niet. Ik heb gezocht naar de ISAPI versie van REQUEST_FILENAME maar kan ik niet vinden...

Kan iemand me in de juiste richting wijzen?

Acties:
  • 0 Henk 'm!

  • 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


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Disclaimer: ik heb nul kennis of ervaring met ISAPI_Rewrite.

Echter, allereerst zit er een fout in je .htaccess: je matcht op "." in je rule, dus op random character. Dus doordat je RewriteBase / stelt matcht een request op http://www.domain.tld/ niet op deze rule, omdat er geen character is. Het gaat in dit geval toevallig goed waarschijnlijk omdat index.php in je default documents staat. Gebruik dus ".*" met sterretje om aan te geven dat je op 0 tot X random characters wil triggeren.

Opmerking 2 is dat IIS volgens mij de opties -f en -d niet kan ondersteunen omdat het fundamenteel anders werkt dan Apache. Waar Apache default uitgaat van een standaard directorystructuur gaat IIS uit van een metabase waarin veel meer dingen kunnen en zullen zitten dan enkel files en directories: denk aan aliases en dynamische mappings. Apache gaat ervan uit dat een request altijd verzoekt om een document in de document root, en kan dus geldig checken of iets naar een file of directory zal verwijzen. IIS kan dit niet voorspellen tot het recursief z'n metabase heeft doorgelopen zonder twijfelachtige aannames te maken vooraf.

Met een simpele workaround ben je er overigens ook (untested maar tis voor het idee):
PHP:
1
2
3
$filepath = dirname(__FILE__).$_SERVER['REQUEST_URI'];
if(file_exists($filepath) && is_file($filepath))
  die(file_get_contents($filepath);

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het matchen op "." gaat goed omdat het op de index.php ook eigenlijk niet hoeft te werken... maar matchen op "(.*)" is inderdaad netter...

Maar ik krijg het nog steeds niet voor elkaar om deze simpele Rewrite met ISAPI voor elkaar te krijgen. Heb al verschillende variaties geprobeerd. Ik heb de httpd.ini nu op de map /dev/ staan. Eentje lager vanuit de root.

code:
1
2
[ISAPI_Rewrite]
RewriteRule (.*) index.php [L]


code:
1
2
[ISAPI_Rewrite]
RewriteRule (.*) /dev/index.php [L]


Anyone?

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Doet je ISAPI_Rewrite uberhaubt iets? Als dit niet het geval is, dan kan je natuurlijk urenlang naar de inhoud van je file kijken, maar dat gaat je niet helpen.

Gebruik je trouwens versie 2 of 3 van ISAPI_Rewrite? Versie 3 zou goed compatible moeten zijn met de Apache mode_rewrite functionaliteit, zie http://www.helicontech.co...ite/doc/compatibility.htm. Als je de site gelooft, kan je de inhoud van je .htaccess file copy-pasten, en dan zou het moeten werken.

Edit: httpd.ini?? Was het niet httpd.conf?

[ Voor 7% gewijzigd door KabouterSuper op 26-02-2008 21:21 ]

When life gives you lemons, start a battery factory