2009-09-22 8 views
0

J'ai récemment migré d'un hôte linux vers un serveur dédié avec Windows 2003, je n'avais qu'un seul site utilisant Mod_rewrite, mais avec ISAPI _Rewrite 3 libre, les règles sont globales.dans MOD_Rewrite/ISAPI_Rewrite, comment puis-je faire des règles affectent des domaines spécifiques?

Comment écrire une condition pour affecter uniquement "monsite.com" et pas les autres?

ceci est mon fichier httpd.conf

# Helicon ISAPI_Rewrite configuration file 
# Version 3.1.0.66 

RewriteEngine On 
RewriteBase/
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?page=$1 
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?page=$1&id=$2 [L] 

Je ne veux pas acheter ISAPI_Rewrite juste pour ce seul site

Merci

Répondre

1

Au moins en ce qui concerne Apache’s mod_rewrite, vous pouvez utiliser le C flag à enchaîner les règles comme suit:

RewriteCond %{HTTP_HOST} =example.com 
RewriteRule^- [C] 
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?page=$1 [C] 
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?page=$1&id=$2 [L] 

Si une règle correspond à et non, toutes les règles chaînées suivantes sont ignorées. Cela signifie que si la première règle ne correspond pas (le nom d'hôte n'est pas example.com), les règles chaînées suivantes sont ignorées. Notez de ne pas ajouter le drapeau C à la dernière règle comme indicateur de chaîne.

+0

Qu'est-ce que "RewriteRule^- [C]"? J'ai essayé cela n'a pas fonctionné mais je pense qu'il a quelque chose à faire avec "RewrieBase /" ou HTTP_HOST ne fonctionne pas en quelque sorte, merci d'avoir répondu btw – sergiogx

+0

@zombiegx: J'ai expliqué cela dans ma réponse: "[...] si la première règle ne match (le nom d'hôte n'est pas 'example.com') [...]" – Gumbo