2010-05-21 6 views
0

Ceci est un suivi de cette question: Rewrite URL - how to get the hostname and the path?RewriteRule mod_rewrite ne fonctionne pas

Je suis cette règle Réécrire:

RewriteEngine On 
RewriteRule ^(http://[-A-Za-z0-9+&@#/%=~_|!:,.;]*)/([-A-Za-z0-9+&@#/%=~_|!:,.;]*)\?([A-Za-z0-9+&@#/%=~_|!:,.;]*)$ http://http://www.xmldomain.com/bla/$2?$3&rtype=xslt&xsl=$1/$2.xsl 

il semble être correct, et exactement ce que je dois. Mais ça ne marche pas sur mon serveur. Je reçois une erreur de 404 pages non trouvée.

mod_rewrite est activé, la règle simple suivante fonctionne très bien:

RewriteEngine On 
RewriteRule ^page/([^/\.]+)/?$ index.php?page=$1 [L] 

Pouvez-vous aider?

Merci

+0

question ServerFault, probablement. –

+0

Quelles adresses URI avez-vous essayées? – Gumbo

Répondre

0

Il croit que ce n'est pas correct. Vous ne pouvez pas utiliser une URL comme premier opérande de RewriteRule.

Ce que vous devez écrire au lieu de

RewriteRule ^(http://[-A-Za-z0-9+&@#/%=~_|!:,.;]*)/([-A-Za-z0-9+&@#/%=~_|!:,.;]*)\?([A-Za-z0-9+&@#/%=~_|!:,.;]*)$ http://http://www.xmldomain.com/bla/$2?$3&rtype=xslt&xsl=$1/$2.xsl 

est (edit: pour une raison quelconque vous voulez faire correspondre le dernier chemin de partie, je vais oblige)

RewriteCond %{HTTP_HOST} !="" 
RewriteRule ^/(.*?)([^/]+)(?:/)?$ http://www.xmldomain.com/bla/page?rtype=xslt&xsl=http%3A%2F%2F%{HTTP_HOST}%2F$1$2.xsl%2A [QSA,B,P,NE] 

Notez également que les règles de réécriture ne sont pas automatiquement hérités par les hôtes virtuels. Vous devez activer l'héritage explicitement.

+0

ok. mais cela ne m'aide pas à résoudre mon problème. J'ai besoin d'attraper la chaîne après la dernière barre oblique ("page") séparément. La partie subsitution devrait ressembler à ceci: http: //www.xmldomain.com/bla/$2?rtype=xslt&xsl=http%3A%2F%2F%{HTTP_HOST}%2F$1$2.xsl Comment fonctionne la partie Pattern a l'air de faire ça? –

+0

C'est de ma faute, j'ai fourni la regex. Est-ce que l'expression régulière fonctionne sur les variables? –

+0

@ buggy1985 ok, alors quel est le 1 $? – Artefacto

0

peut-être essayer ce

RewriteRule ^/(.+)/page/([^/]+)/(.*)$ domain/index.php?page=$2&host=%{HTTP_HOST} [QSA,NC,L] 
Questions connexes