2010-01-08 5 views
0

J'ai cette règle Isapi_Rewrite:Aide à la migration de ISAPI_Rewrite à l'URL IIS7 Réécriture

RewriteRule /([^/.?]+) /sc.asp?p=$1 [I,L] 

Cette règle devrait réécrire urls comme:

/un-article

/article2

et ne devrait pas re écrire urls comme:

/home.asp

/admin (parce qu'il ya un répertoire nommé admin)

/admin/

/sites/Gutterman

Il fonctionne très bien dans ISAPI_Rewrite Hier, j'ai acheté un VPS Windows 2008 R2, et j'ai commencé à transférer mon application Web ASP-classic à la ne w serveur. Maintenant, tout fonctionne bien, sauf pour la réécriture d'URL. J'ai google-ed un peu et a constaté que le module de réécriture d'URL IIS7 est complètement différent de l'ISAPI_Rewrite.

J'ai créé une règle vide . Dans le modèle que j'ai défini /([^/.?]+), dans Action -> Type d'action I définir Rewrite et dans Action -> Propriétés de l'action -> Réécrire l'URL I définir sc.asp?p={R:0}. Ça n'a pas marché. Après quelques recherches, j'ai trouvé que je devais désactiver le caractère / au début de mon modèle (donc mon modèle est maintenant ([^/.?]+)). Donc, je l'ai fait, et maintenant, il est juste réécrire url, et il devrait réécrire uniquement les URL qui ne sont pas des répertoires ou des fichiers.

Des idées?

Merci.

Répondre

1

La façon la plus simple pour éviter la réécriture des URL qui pointent effectivement vers des fichiers existants est d'ajouter ces conditions:

<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 

En outre, votre modèle de correspondance montre une idée fausse. La chaîne de requête n'est pas transmise au modèle d'URL de correspondance. Vous n'avez donc pas besoin de rechercher ?.

Questions connexes