2010-10-17 6 views
1

Je suis un débutant rewrite, je me demande pourquoi cette règle de réécriture ne fonctionne pas, il cesse Apache de démarrerApache règle de réécriture

RewriteRule ^([-a-zA-Z0-9_]+)?/constant/([-a-zA-Z0-9_]+)/(.*)$ http://$2.domain.com/$1/$3 [R=301, NC]

Qu'est-ce que cette règle devrait faire est URL refactoring, exemples:

http://www.domain.com/controller/constant/variable/action devraient être redirigés vers http://variable.domain.com/controller/action

et

http://www.domain.com/constant/variable devrait être redirigés vers http://variable.domain.com

essentiellement/constant/variable doit être détectée, insérée dans le sous-domaine, puis retiré

S'il vous plaît aidez-moi à ce problème subtil que je suis confronté.

Merci

+0

Lorsque vous dites "rediriger", attendez-vous une redirection côté client? Ce n'est pas ce que les règles de réécriture sont pour. –

+0

Quel est exactement le message d'erreur de votre Apache httpd? – joschi

+0

Erreur: Erreur de syntaxe dans le fichier de configuration. quand je commente cette ligne cela fonctionne – wael34218

Répondre

2

Essayez avec deux règles:

RewriteRule ^constant/([-a-zA-Z0-9_]+)$ http://$2.domain.com/$1 [R=301,NC] 
RewriteRule ^([-a-zA-Z0-9_]+)/constant/([-a-zA-Z0-9_]+)/(.*)$ http://$2.domain.com/$1/$3 [R=301,NC] 

Notez également que les drapeaux ne doivent pas contenir des espaces: [R=301, NC] est une syntaxe incorrecte mais [R=301,NC] est une syntaxe valide.

+0

Il n'a pas eu l'erreur de syntaxe, mais il n'a pas fonctionné non plus :( – wael34218

+0

Merci cela a fonctionné, je ne faisais pas attention – wael34218