Apache2: reindirizzamento di un sottodominio a un altro URL


15

Ho due sottodomini, a.website.com e b.website.com, che indicano lo stesso indirizzo IP. Voglio reindirizzare b.website.com a a.website.com:8080. Ho questo nel mio file .htaccess ...

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

... ma non funziona.

C'è un modo per farlo funzionare?


Prova ad aggiungere quanto segue .htaccessnella directory principale sopra la directory di interesse: RedirectMatch ^/foo/$ /foo/bar/oppure RedirectMatch ^/foo/$ /bar/baz/. Vedi anche Come fare in modo che apache2 reindirizzi a una sottodirectory .
JWW

Risposte:


20

Puoi sempre usare un semplice VirtualHost:

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

Se preferisci utilizzare il file .htaccess, ti manca solo un segno% sulla condizione di riscrittura:

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

Ho provato entrambi e non hanno funzionato. Ho mod_rewrite abilitato e ho VirtualHost in un file del sito separato. C'è qualcosa che mi manca?
Technius,

3
Funziona benissimo. Ho avuto un problema di reindirizzamento del loop, perché stavo indirizzando un sottodominio a una sottocartella e quella sottocartella stava reindirizzando. Ora, reindirizzo il sottodominio all'URL che corrisponde alla cartella e il 2 ° reindirizzamento avviene perfettamente!
Paschalis,

Come fare http://o per preservare o https://, in qualunque modo, b.website.comsi accedesse in primo luogo?
Golar Ramblar,

0

Completando la risposta principale

Tipo di reindirizzamento

Puoi specificare esplicitamente il tipo di reindirizzamento che pretendi.
Ti suggerisco di utilizzare un reindirizzamento temporaneo (302) durante il test della regola di reindirizzamento.

# 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]

Specificare i modelli di corrispondenza delle directory

È possibile reindirizzare solo le richieste che corrispondono a qualche modello.

# 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]
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.