Apache mod_rewrite 500 Erreur interne du server

J'essaie de créer un sous-domaine dynamic et j'ai beaucoup de difficulté, je reçois 500 erreurs de server interne

Donc, par exemple, le domaine réel devrait être

http://www.parameterToBePassed.domain.com/

qui devrait repérer / redirect

http://www.domain.com/shopping/gatename/parameterToBePassed

Cependant, lorsque j'aie access à cette URL, j'avance une erreur de server interne (500), des idées?

Le vhost.conf tient

ServerAlias www.domain.com domain.com *.domain.com <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} !www.domain.com$ [NC] RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).domain.com [NC] RewriteRule (.*) http://www.domain.com/shopping/gatename/$1 [L] </IfModule> 

J'utilise Redhat Linux, avec Plesk

(J'ai répondu à une publication comme ça il n'y a pas si longtime, bien que la situation diffère un peu)

Dire que quelqu'un va à a.domain.com . Cela correspond aux deux conditions.

Le problème principal: votre règle de réécriture correspond à une input vide …

Ainsi, a.domain.com passe par la règle et devient a.domain.com/shopping/gatename/ .

Et puis il returnne au server à nouveau , et correspond à nouveau aux deux conditions. L'URL devient a.domain.com/shopping/gatename/shoppin/gatename/ .

As-tu remarqué? Il se substitue à la valeur de la requête, pas à ce que vous avez capturé dans votre deuxième RewriteCond, et vous findez votre autre problème.

Vous pouvez réutiliser les groupes capturés par RewriteCond mais ils sont précédés de % , et non de $ . Par conséquent, ce que vous voulez vraiment est ceci (avec les métacaractères regex complets, etc. plus les ancres):

 RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC] # Non capturing group for "www." if present: it is of no interest RewriteCond %{HTTP_HOST} ^(?:www\.)([a-z0-9-]+)\.domain\.com$ [NC] RewriteRule (.*) http://www.domain.com/shopping/gatename/%1/$1 [L] # Note the %!