2009-11-09 4 views
9

Est-il possible d'utiliser mod_rewrite pour résoudre les adresses hébergées sur un autre serveur?Règle de réécriture pour les pages externes?

Dire que je veux installer cette URL:

http://www.myserver.com/myfolder/ 

Pour résoudre réellement:

http://www.anotherserver.com/anotherfolder/ 

Si oui, pourriez-vous donner un exemple RewriteRule?

-Merci

Répondre

17

Vous pouvez utiliser le P flag dans une règle mod_rewrite pour obtenir cette URL de substitution demandée par mod_proxy: il demandera

RewriteEngine on 
RewriteRule ^myfolder/$ http://other.example.com/anotherfolder/ [P] 

Maintenant, lorsqu'un client demande /myfolder/ de votre serveur, http://other.example.com/anotherfolder/ et envoyer la réponse de cette serveur vers le client.

+1

À noter que vous devez également inclure le module mod_proxy_http maintenant. – Christian

+0

@ Christian pouvez-vous fournir plus de détails avec ce que vous entendez par "include module mod_proxy_http"? – user1111929

+0

Bonjour @ utilisateur1111929, voir ici; https://httpd.apache.org/docs/2.4/mod/mod_proxy_http.html - Ce module doit être activé avant que cette réécriture ne fonctionne. – Christian

3

Non, tunnel est impossible, vous auriez à utiliser un script CGI pour cela. Cependant, vous pouvez rediriger :

RewriteRule ^(.*) http://new.example.com/$1 

avec ou sans le drapeau [R], et il rediriger automatiquement l'utilisateur vers le nouveau domaine.

Edit: Apparemment, il est possible aux demandes de tunnel avec mod_proxy et le drapeau [P]. Voir la réponse de Gumbo.

+0

merci cool, l'utilisateur verra l'actualisation dans ce cas? (c'est-à-dire que la barre d'adresse affichera http://new.example.com). Quand vous dites que j'ai besoin d'un script CGI, pourriez-vous me donner des indices sur ce que je devrais rechercher? acclamations – sthg

+0

Oui, l'utilisateur verrait la nouvelle URL. Si vous ne le souhaitez pas, allez sur google (ou cherchez sur StackOverflow) pour "proxy software". – Boldewyn

+0

Super - merci mon pote. – sthg

-2

Hey j'ai essayé et rewrite ne fonctionne pas (seulement testé dans localhost)

Je trouve aussi cette façon facile

Redirect /myfolder external_url 
Questions connexes