2009-11-18 3 views
0

J'ai 3 "règles". Une pour s'assurer que les URL sont en minuscules, une autre pour inclure une barre oblique à la fin des répertoires, et une troisième pour forcer l'accès aux pages index.html à travers le répertoire.Règles de combinaison de redirection IIRF?

Le problème w/comment je l'ai, parfois cela provoque plusieurs redirections 301. J'aimerais vraiment que chaque règle s'applique à tour de rôle et ensuite, si nécessaire, rediriger une fois vers l'URL finale. Par exemple, une URL peut avoir besoin d'être convertie en minuscules et d'ajouter une barre oblique. Ou peut avoir besoin d'être lowecase et de changer de index.html en un répertoire.

Des idées comment je peux le faire? Merci beaucoup.

Les règles sont ci-dessous:

#LOWERCASE URLS For Directories, aspx, html files 
RedirectRule ^/(.*[A-Z].*(/|\.html|\.aspx))$ /#L$1#E [R=301] 


#ADD SLASH TO DIRECTORIES 
#--------------------------------------------- 
#Perm Redirect If: 
#Starts w/ Forward Slash 
#Match Any Characters Except (. or ?) 1 or more times 
#End w/ someting besides a dot, ?, or slash 
#If So, Perm Redirect captured piece W/ Slash At End and at front 
RedirectRule ^/([^.?]+[^.?/])$ /$1/ [I,R=301] 


#CHANGE INDEX.HTML REQUESTS TO DIRECTORY REQUESTS 
#--------------------------------------------- 
RedirectRule ^/(.*)/index\.html$ /$1/ [I,R=301] 

Répondre

0

Je ne vois la chance de combiner les deux derniers:

RedirectRule ^/([^A-Z?]*[A-Z].*(/|\.html|\.aspx))$ /#L$1#E [R=301] 
RedirectRule ^/([^.?]+?[^.?/])(/index\.html)?$ /$1/ [I,R=301] 
0

Malheureusement, la réponse sur les forums IIRF ne résout pas le problème de redirection multiple. chaque règle provoque toujours sa propre redirection.

utilisant un RewriteRule [sans drapeau redirect] au lieu d'un RedirectRule renvoie une erreur dans l'état IIRF:

# rule: 
# force HTTPS [disable on dev site until port 80 and port 443 served by same site] 
# after rewrite continue with remaining tests 
RewriteCond %{HTTPS} off 
RewriteRule ^/(.*)$ https://www.example.com/$1 [NC] 

erreur: C: \ Inetpub \ wwwroot \ exemple-com \ www \ Iirf.ini (26): AVERTISSEMENT: Réécriture vers une URL complète. Probablement faux. Vous pouvez vouloir RedirectRule ou ProxyPass. Je pensais que l'IIFF aurait pris les résultats de cette règle et l'aurait renvoyé à nouveau via les règles de l'IIRF, récupérant toutes les autres modifications d'URL en cours de route, et envoyant finalement une seule redirection 301 au navigateur avec le résultat final de toutes les réécritures. Le drapeau [N] le fait dans mod_rewrite, d'après ce que je comprends.

Questions connexes