Come fare in modo che Apache2 reindirizzi a una sottodirectory


66

Sto eseguendo apache2 su Debian etch, con più host virtuali.

Voglio reindirizzare in modo che http://git.example.comvadahttp://git.example.com/git/

Dovrebbe essere davvero semplice, ma Google non lo sta tagliando. Ho provato le cose di Redirect e Rewrite e sembra che non facciano proprio quello che voglio ...


Ci sono molti modi per affrontarlo, ma qual è esattamente ciò che stai cercando di realizzare?
WerkkreW,

Risposte:


111

Sentiti un po 'sciocco - un po' più googling ha rivelato la risposta che stavo cercando:

RedirectMatch ^/$ /git/

Fondamentalmente reindirizzare la radice e solo la radice.

Questo codice potrebbe essere eseguito in un .htaccessfile (esiste un tag per questo, quindi presumo che sia il caso d'uso originale). Ma se puoi modificarlo, il server principale apache config lo inserisce nella sezione del tuo sito web probabilmente all'interno di una <VirtualHost>sezione.

I documenti per RedirectMatch affermano che il contesto può essere "configurazione server, host virtuale, directory, .htaccess".


2
ok, quindi dove mettere questa riga di codice?
user230910

Ho dovuto mettere un URI completo ( https://example.com/git/) per farlo funzionare. Strano.
Mat M,

3

Hai la risposta corretta lì con il reindirizzamento. Devi stare attento quando reindirizzi tutto da qualche altra parte, dal momento che puoi ottenere reindirizzamenti ricorsivi lì. Questo accade se si desidera creare una pagina di manutenzione.


4
Infatti. Redirect / /git/provoca fuochi d'artificio ricorsivi.
Davor Josipovic,

3

È possibile utilizzare la direttiva Redirect.

<Directory />
   Redirect permanent / http://git.example.com/git/
   ...
</Directory>

0

La risposta accettata ha risolto il mio problema, ma ho anche scoperto che dovevo aggiungere un reindirizzamento 404 per pagine inesistenti: la mia situazione è che un'installazione OwnCloud si trova a un livello inferiore alla radice ( https://example.com/owncloud ) .

Questo ha funzionato per me, per inviare tutto alla mia sottodirectory:

# redirect from root to subdirectory
RedirectMatch ^/$ /thesubdirectory/

# redirect on 404 to subdirectory
ErrorDocument 404 /thesubdirectory/index.php

2
ErrorDocument dovrebbe restituire una pagina di errore, non un documento utile. Questo è importante per i crawler.
Jonah Benton,
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.