Apache2 - Rediriger un sous-domaine vers une autre URL

15

J'ai deux sous-domaines, a.website.com et b.website.com, pointant vers la même adresse IP. Je souhaite rediriger b.website.com vers a.website.com:8080. Je l'ai dans mon fichier .htaccess ...

RewriteEngine on
RewriteCond {HTTP_HOST} b\.website\.com
RewriteRule ^(.*)$ http://b.website.com:8080$1 [L]

... mais ça ne marche pas.

Existe-t-il un moyen de le faire fonctionner?

Technius
la source
Essayez d'ajouter ce qui suit .htaccessdans le répertoire parent au-dessus du répertoire d'intérêt: RedirectMatch ^/foo/$ /foo/bar/ou RedirectMatch ^/foo/$ /bar/baz/. Voir également Comment obtenir apache2 pour rediriger vers un sous-répertoire .
2016 à 8h27

Réponses:

20

Vous pouvez toujours utiliser un simple VirtualHost:

<VirtualHost *:80>
  ServerName b.website.com
  RedirectPermanent / http://a.website.com:8080/
</VirtualHost>

Si vous préférez utiliser le fichier .htaccess, il vous manque juste un signe% sur la condition de réécriture:

RewriteEngine on
RewriteCond %{HTTP_HOST} b.website.com
RewriteRule ^(.*)$ http://a.website.com:8080$1 [L]
mattw
la source
J'ai essayé les deux et ils n'ont pas fonctionné. J'ai activé mod_rewrite et j'ai VirtualHost dans un fichier de site séparé. Y a-t-il quelque chose qui me manque?
Technius
3
Cela fonctionne bien. J'ai eu un problème de redirection de boucle, car je pointais un sous-domaine vers un sous-dossier, et ce sous-dossier redirigeait. Maintenant, je redirige le sous-domaine vers l'URL qui correspond au dossier, et la 2e redirection se passe très bien!
Paschalis
Comment faire pour préserver http://ou https://, quelle que soit la manière dont b.website.comon a accédé en premier lieu?
Golar Ramblar
0

Compléter la réponse principale

Type de redirection

Vous pouvez spécifier explicitement le type de redirection que vous prétendez.
Je vous suggère d'utiliser une redirection temporaire (302) lors du test de la règle de redirection.

# In a VirtualHost file
...
Redirect [301|302] /old_location http://new_domain/newlocation


# In a .httaccess file
...
RewriteRule ^(.*)$ http://new_domain/$1 [R=302,L]

Spécifiez les modèles de correspondance de répertoire

Vous ne pouvez rediriger que les demandes qui correspondent à un modèle.

# In a VirtualHost file
...
RedirectMatch [301|302] ^/public/(.*)$ http://public.example.com/$1


# In a .httaccess file
...
RewriteRule ^/public/(.*)$ http://public.example.com/$1 [R=302,L]
ePi272314
la source