2014-10-21 20 views
5

Sono alle prese con un problema di età avanzata. Ho ereditato un sito con un SEO piuttosto buono e un problema lampante. L'intero sito è ospitato nella sottodirectory/site /. Ho deciso che ho bisogno di caricare il sito alla radice. Quindi qualcosa come < - reindirizzerà a /index.php (< - che conta come un link, se è poco chiaro intendo che è la radice del sito/index.php.)Avanzato reindirizzamento 301 per un intero sito alla radice del sito?

Usiamo joomla per il nostro back-end e ci sono centinaia di pagine sul sito a questo punto. Ho faticato a trovare nessuno dei reindirizzamenti che ho visto per fare ciò che voglio che facciano. In sostanza, qualsiasi pagina visitata dai nostri utenti da un vecchio collegamento con /site/ deve essere reindirizzata allo stesso link esatto, ma senza la stella.

Sono aperto solo a caricare la pagina da/site/e a renderla simile a quella di root. Sono a conoscenza del fatto che questo può essere fatto con alcuni miglioramenti della riscrittura mod (http://kb.mediatemple.net/questions/85/Using+.htaccess+rewrite+rules#gs?) Ma non ho ancora avuto alcun successo. Gestisco un sito beta che simula il sito principale in un sottodominio che ho già spostato da/site/a/così posso testare molte configurazioni .htaccess.

Qualsiasi aiuto è apprezzato ... grazie!

+0

ho trovato questo che sembra fare il trucco ... RewriteCond% {}^HTTP_HOST www.beta.example.org $ [NC] RewriteRule^$ http! (*.): // beta. example.org/$1 [r = 301, nc, L] Qualcuno sa se questo codice funzionerà con la riscrittura dell'URL di joomla anche abilitato? Quindi può rimuovere anche /index.php dalla pagina? Inoltre, non sono sicuro di come funzioni questo codice, ma sembra che faccia esattamente quello che mi serve. – Daystar1124

risposta

1

Questa sembra essere la risposta operativa con cui andrò. Fondamentalmente, questo deve essere inserito nella directory che si desidera reindirizzare da, nel mio caso, che era root/site /.


RewriteEngine on

RewriteCond% {HTTP_HOST}!^Www.beta.example.org $ [NC]

RewriteRule^(. *) $ http://beta.example.org/ $ 1 [r = 301, nc , L]


Suppongo che la prima regola ignori www? Mi piacerebbe lavorarci su, ma non sono sicuro del motivo per cui sarebbe stato creato comunque. questo riscriverà qualsiasi URL che accede a quel file .htaccess (all'interno della tua sottodirectory) e ti indirizzerà allo stesso URL senza la lista delle sottodirectory. Non funziona con lo strumento di riscrittura index.php, ma va bene perché raggiunge comunque la pagina corretta.

Se qualcuno ha una soluzione migliore per me con Joomla, sarei felice di sentirlo. Ma, per quanto mi riguarda, per ora, perché mi sta dando ottimi risultati.

+0

il primo non ignora www; 'RewriteCond' [dice] (http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond)" hey, se questo corrisponde, c'è qualcosa che devi fare ". Il "somethinig" è il RewriteRule, ovviamente. La tua risposta sembra abbastanza scorretta in base alla tua domanda. Se non lo accetti, darò una regola migliore. – tedder42

+1

[Questa risposta] (http://stackoverflow.com/a/18468916/1470907) sembra più appropriata per la tua domanda. La regola nella tua risposta dice efficacemente: 'Se il dominio non inizia con 'www', reindirizza a una versione senza 'www'. Ciò normalmente causerebbe un ciclo di reindirizzamento, ma qui viene evitato reindirizzando verso una posizione che non è 'influenzato da questa regola. È possibile rimuovere la riga 'RewriteCond' e utilizzare un percorso anziché un URL completo nella regola per rendere più chiaro l'intento della regola. – Stecman

+0

Grazie per aver spiegato questo. Non ho accettato il mio e ho accettato la risposta dei ragazzi di seguito perché fa un lavoro fantastico. C'è un modo migliore? Sarei lieto di cambiare la risposta migliore se qualcuno migliora su @chesterbr qui sotto. Presumo che la sua risposta funzionerebbe al meglio anche con il SEO esistente. Ho accettato quello che ho trovato come risposta solo perché sembrava che stesse facendo quello che volevo che facesse comunque. – Daystar1124

0

se il server è apache2, è possibile configurare lì

<VirtualHost *:80> 
ServerName sitio.com 
ServerAlias www.sitio.com 
DocumentRoot /home/user/public_html/sitio/ 
... 
</VirtualHost> 

È necessario autorizzazioni per questo cambiamento