2010-02-02 4 views
0

Je dois répliquer la fonctionnalité de mod_alias que je ne peux pas utiliser directement parce que je suis sur un hébergement partagé, et les instructions Alias ​​ne fonctionnent pas dans .htaccess.Quel est le problème avec cette instruction mod_rewrite?

Ce que je veux obtenir est essentiellement

Alias /manual /www/customer/some_other_dir/manual 

Je suis en train mod_rewrite:

RewriteRule ^/manual/(.*) /www/customer/some_other_dir/manual/%1?%{QUERY_STRING} [L] 

ce ne correspondra jamais à aucun appel à www.example.com/manual.

Pourquoi pas? Qu'est-ce que je fais mal?

+0

@Pekka - Vérifiez ma révision avant de mettre ce direct! : P –

Répondre

2

Essayez:

RewriteRule ^/manual(/(.*))?$ /www/customer/some_other_dir/$2 [L] 

Le ? signifie en option pour le / caractère, en plus de la fermeture kleene sur le . pour assurer /manual, /manual/ et /manual/a/b/c bien que je déduis une barre oblique est généralement ajoutée par pré-rewrite apache moteur quand même.

Un test rapide sur ma boîte montre cette règle passe aussi la chaîne de requête:

/manual/a/b?c=d -> /www/customer/some_other_dir/manual/$2 
+0

Notez que cela correspondra également '/ manualasdf'! – Aistina

+0

@Aistina - Bon point !, bien attrapé! Révisera;) –

+0

Très bien, merci pour la révision! –

1

Tun off Option Multiviews

Options -Multiviews 

et je pense, il est attendre/à la fin de l'URL demandée.

Quelque chose comme ceci correspondra aussi à www.example.com/manual.

RewriteRule ^/manual/?(.*) /www/customer/some_other_dir/manual/%1?%{QUERY_STRING} [L] 
Questions connexes