Řešení 1:
Řešení
Tady je to, na co jsem nakonec přišel poté, co mě Miles Erickson nastavil správným směrem. Chtěl jsem, aby adresní řádek odrážel původní subdoménu/doménu požadavku, nikoli přesměrovaný server a port, ale navedl mě na správnou cestu, aby Google navrhl řešení pomocí VirtualHost
a nakonec jsem našel řešení, které zahrnovalo použití 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>
Řešení 2:
Spusťte na terminálu následující řádek (správně zadejte název domény a subdomény)
sudo nano /etc/apache2/sites-available/subdomain.example.com.conf
Vložte následující kód a změňte jej podle svého požadavku
<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>
Spusťte následující řádky na terminálu (správně zadejte název domény a subdomény)
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2ensite subdomain.example.com.conf
sudo service apache2 restart
Řešení 3:
Za předpokladu, že dev.mydomain.com lze převést na IP adresu mydomain.com, můžete do svého httpd.conf přidat následující:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName dev.mydomain.com
redirect / http://mydomain.com:8080/
</VirtualHost>
Relevantní dokumentace Apache:
- Průvodce vytvářením virtuálních hostitelů založených na jménech
- Jádro, včetně VirtualHost a NameVirtualHost
- Přesměrování
Související otázka:Přesměrování Apache na základě názvu hostitele
(Poznámka:původní verze této odpovědi nesprávně navrhla použití RedirectMatch, který, jak užitečně zdůraznil @ChrisS, nemůže analyzovat doménovou část adresy URL.)
Řešení 4:
Přidejte do své hlavní konfigurace vhost následující řádky:
ProxyPreserveHost On
ProxyPass / http://example.com:8080/
ProxyPassReverse / http://example:8080/
Všimněte si, že to vyžaduje mod_proxy na Apache.
Řešení 5:
Hledáte mod_rewrite. Zde je odkaz na dokumentaci Apache, která obsahuje mnoho příkladů pro základní a pokročilé konfigurace..
A pokud nejste schopni interpretovat dokumentaci sami, zkuste to přidat do httpd.conf:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^dev\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com:8080$1 [R=301]
A pokud to není jasný příklad, zde je také odkaz na průvodce mod_rewrite pro začátečníky.