PDA

View Full Version : [Htaccess] Redirect 301 con eccezione


nicovon
02-04-2019, 20:04
Buonasera, dovendo "dismettere" il vecchio sito gov.it a favore del nuovo edu.it, mi hanno consigliato di impostare il seguente .htaccess:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.vecchiosito\.gov\.it$ [NC]
RewriteRule ^ https://www.nuovosito.edu.it%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

il redirect funziona da www.vecchiosito.gov.it ma non funziona per esempio da www.vecchiosito.gov.it/corsi-di-studio perchè si viene rediretti a www.nuovosito.edu.it/corsi-di-studio che è una pagina che non esiste per cui giustamente errore 404.

giustamente mi hanno consigliato di reindirizzare correttamente tutte le pagine del vecchio sito alle "corrispondenti" del nuovo sito, ma come si fa?

inoltre, dovrei aggiungere un'eccezione. il seguente percorso www.vecchiosito.gov.it/aulavirtuale/moodle/ non deve essere reindirizzato al nuovo sito ma deve poter essere visitato.

Grazie mille

Kaya
04-04-2019, 08:34
Buonasera, dovendo "dismettere" il vecchio sito gov.it a favore del nuovo edu.it, mi hanno consigliato di impostare il seguente .htaccess:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.vecchiosito\.gov\.it$ [NC]
RewriteRule ^ https://www.nuovosito.edu.it%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

il redirect funziona da www.vecchiosito.gov.it ma non funziona per esempio da www.vecchiosito.gov.it/corsi-di-studio perchè si viene rediretti a www.nuovosito.edu.it/corsi-di-studio che è una pagina che non esiste per cui giustamente errore 404.

giustamente mi hanno consigliato di reindirizzare correttamente tutte le pagine del vecchio sito alle "corrispondenti" del nuovo sito, ma come si fa?

inoltre, dovrei aggiungere un'eccezione. il seguente percorso www.vecchiosito.gov.it/aulavirtuale/moodle/ non deve essere reindirizzato al nuovo sito ma deve poter essere visitato.

Grazie mille

Se vuoi fare i match vecchio->nuovo devi fare le cose manina url per url e secondo me è impossibile da farsi se non corrispondo.
Per mandare alla homepage basta che rimuovi {REQUEST_URI}
Se invece vuoi il match uno a uno....dai un occhio qua https://www.keliweb.it/billing/knowledgebase/119/Apache-modrewrite-con-esempi.html che ci sono svariati esempi utili.

nicovon
04-04-2019, 14:42
Se vuoi fare i match vecchio->nuovo devi fare le cose manina url per url e secondo me è impossibile da farsi se non corrispondo.
Per mandare alla homepage basta che rimuovi {REQUEST_URI}
Se invece vuoi il match uno a uno....dai un occhio qua https://www.keliweb.it/billing/knowledgebase/119/Apache-modrewrite-con-esempi.html che ci sono svariati esempi utili.

Grazie mille. Mentre per aggiungere un'eccezione al redirect? Ti spiego, ho un sito moodle interno al sito vecchio che deve poter essere visitato.

Kaya
04-04-2019, 15:05
Grazie mille. Mentre per aggiungere un'eccezione al redirect? Ti spiego, ho un sito moodle interno al sito vecchio che deve poter essere visitato.

Metti la regola specifica per prima cosi fa il match e agisce di conseguenza.
Poi l'altra.

komodo_1
04-04-2019, 15:08
Grazie mille. Mentre per aggiungere un'eccezione al redirect? Ti spiego, ho un sito moodle interno al sito vecchio che deve poter essere visitato.

Ciao
forse puoi provare qualcosa del tipo

RewriteCond %{REQUEST_URI} !aulavirtuale
o
RewriteCond %{REQUEST_URI} !aulavirtuale/

nicovon
04-04-2019, 16:53
Metti la regola specifica per prima cosi fa il match e agisce di conseguenza.
Poi l'altra.

Abbi pazienza non ho capito

komodo_1
04-04-2019, 18:03
Abbi pazienza non ho capito
Se ho capito bene la url per cui devi bypassare il redirect contiene la parola aulavirtuale, altrimenti sostituisci con una parola che hai nella url che ti interessa (moodle?)
Nel file .htacces , dove hai le rewrite rule, prova ad aggiungere delle regole simili dopo le tue o a usare la condizione !aulacorsi (o !moodle) alla fine di quelle che stai usando già

nicovon
04-04-2019, 20:12
Se ho capito bene la url per cui devi bypassare il redirect contiene la parola aulavirtuale, altrimenti sostituisci con una parola che hai nella url che ti interessa (moodle?)
Nel file .htacces , dove hai le rewrite rule, prova ad aggiungere delle regole simili dopo le tue o a usare la condizione !aulacorsi (o !moodle) alla fine di quelle che stai usando già

a partire da http://www.sitoweb.gov.it/aulavirtuale tutte le pagine devono essere visitabili perchè dentro la cartella aulavirtuale c'è tutto il sito moodle

come si traduce in .htaccess?