2010-11-29 19 views
0

J'espère que les personnes non-IIS peuvent m'aider à ce sujet bien que le problème que j'ai est basé autour d'un serveur IIS6 exécutant ISAPI_Rewriter.problèmes de mod_rewrite utilisant ISAPI_rewriter sur IIS6

La situation est que je cours Wordpress sur IIS6, ISAPI_Rewriter est utilisé pour remplacer mod_rewrite et fonctionne correctement. Mon problème est que quand je l'obtiens pour réécrire mes URLs pour Wordpress (ainsi je n'ai pas besoin du nom de fichier index.php dedans) il montre un 404. Après beaucoup de recherche j'ai trouvé que le problème était parce qu'une partie d'ASP.net (ou quelque chose de similaire) ajoutait eurl.axd/[chaîne de caractères aléatoires] à la fin des URL et donc cela a été introduit dans la demande de Wordpress et de le casser. Je mets le modèle Wordpress pour sortir l'URL demandée et il ressemble à quelque chose comme ceci:

http://www.example.com/index.php/about/eurl.axd/b552863f2d5e9841b5d8b79b44ac02e8/

Je crois que cela est dû à l'ordre hiérarchique des choses différentes dans le système IIS et le coupable est nécessaire pour exécuter une autre partie du projet. Je préfère continuer à utiliser ISAPI_Rewriter pour remonter les URL, donc j'aimerais savoir ceci:

Y a-t-il un moyen d'obtenir mod_rewrite pour supprimer eurl.axd/[string] avant de le charger sur le système?

Mon fichier .htaccess apparaît actuellement comme tel:

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# The following line excludes folders from rewriting 
RewriteCond %{REQUEST_URI} !^/folder-name/ 

RewriteRule ^/(.*)$ /$1 [NC,L] 

Merci pour toute l'aide, il est toujours très apprécié.


EDIT: avoir réglé mon htaccess en fonction des suggestions et il semble bien fonctionner des brefs tests que j'ai effectués. L'ai posté ci-dessous.

RewriteEngine on 
RewriteBase/

# This is used to strip ASP.net eurl.axd bits 
# from the URL so wordpress can use permalinks 


# For the root 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/wp-admin/ 
RewriteRule ^eurl\.axd/[0-9a-f]+/$ index.php [NC,L] 


# For internal permalinks 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/wp-admin/ 
RewriteRule ^(.*)/eurl\.axd/[0-9a-f]+/$ index.php/$1 [NC,L] 

Répondre

1

Quelque chose comme ceci près du haut de votre liste de réécritures devrait fonctionner:

RewriteRule ^(.*)/eurl\.axd/[0-9a-f]+/$ /$1 
+0

Génial, cela le rend bien droit! J'ai fait quelques ajustements à mon htaccess basé autour de ça et ça a marché un charme. Merci Laurence. – Leonard

0

J'utilise l'expression rationnelle suivante comme première règle avec Ionics Isapi Rewriter pour les sites Web en cours d'exécution sur ASP.NET 4 sur IIS 6 pour remédier aux problèmes causés par le breaking change introduit avec ASP.NET 4:

RewriteRule ^(.*)/eurl.axd/[a-f0-9]{32}(.*)$ $1$2 

Cela me permet d'utiliser à nouveau les URLs sans extension.

Notez que le deuxième groupe capture la chaîne de requête si elle est présente et la restitue à l'URL réécrite.

Et oui, c'est a feature, not a bug.