Solution 1 :
Solution
Voici ce que j'ai finalement trouvé après avoir été mis dans la bonne direction par Miles Erickson. Je voulais que la barre d'adresse reflète le sous-domaine/domaine d'origine de la demande et non le serveur et le port redirigés, mais il m'a mis sur la bonne voie pour trouver une solution Google en utilisant VirtualHost
et j'ai finalement trouvé une solution qui incluait l'utilisation de mod_proxy
.
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName dev.mydomain.com
ProxyPreserveHost On
# setup the proxy
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
ProxyPass / http://localhost:8888/
ProxyPassReverse / http://localhost:8888/
</VirtualHost>
Solution 2 :
Exécutez la ligne suivante sur le terminal (spécifiez correctement votre nom de domaine et de sous-domaine)
sudo nano /etc/apache2/sites-available/subdomain.example.com.conf
Collez le code suivant et modifiez-le selon vos besoins
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName subdomain.example.com
ServerAlias subdomain.example.com
ProxyRequests Off
#ProxyPass / http://localhost:8080/
<Location />
ProxyPreserveHost On
ProxyPass http://example.com:8080/
ProxyPassReverse http://example.com:8080/
</Location>
# Uncomment the line below if your site uses SSL.
#SSLProxyEngine On
</VirtualHost>
Exécutez les lignes suivantes sur le terminal (spécifiez correctement votre nom de domaine et de sous-domaine)
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2ensite subdomain.example.com.conf
sudo service apache2 restart
Solution 3 :
En supposant que dev.mydomain.com puisse être résolu en IP de mydomain.com, vous pouvez ajouter ce qui suit à votre httpd.conf :
NameVirtualHost *:80
<VirtualHost *:80>
ServerName dev.mydomain.com
redirect / http://mydomain.com:8080/
</VirtualHost>
Documentation Apache pertinente :
- Guide de création d'hôtes virtuels basés sur le nom
- Core, y compris VirtualHost et NameVirtualHost
- Redirection
Question connexe :redirection Apache basée sur le nom d'hôte
(Remarque :la version originale de cette réponse suggérait à tort l'utilisation de RedirectMatch, qui, comme @ChrisS l'a utilement souligné, ne peut pas analyser la partie domaine de l'URL.)
Solution 4 :
Ajoutez dans votre configuration principale de vhost les lignes suivantes :
ProxyPreserveHost On
ProxyPass / http://example.com:8080/
ProxyPassReverse / http://example:8080/
Notez que cela nécessite mod_proxy sur Apache.
Solution 5 :
Vous recherchez mod_rewrite. Voici le lien vers la documentation d'Apache qui comprend de nombreux exemples de configurations de base et avancées.
Et si vous ne parvenez pas à interpréter la documentation vous-même, essayez d'ajouter ceci à httpd.conf :
RewriteEngine on
RewriteCond %{HTTP_HOST} ^dev\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com:8080$1 [R=301]
Et si ce n'est pas un exemple clair, voici également un lien vers un guide pour débutants mod_rewrite.