• Super User

    Apache: RewriteEngine e RewriteUrl per tutti i siti

    Salve a tutti 🙂 ,
    vorrei abilitare una pagina per ogni sito posto sotto i vari virtualhost dell'apache che mostri una pagina "sito in manutenzione" (tipo questa w w w. gpmontaggi.it).

    Siccome ogni tanto ho bisogno di fare per l'appunto una manutenzione straordinaria, accade che i singoli clienti entrando nel proprio sito durante questa situazione, vedano il sito irraggiungibile - mi chiamano e puntualmente devo ripetere la solita zolfa: "manutenzione".

    Ecco vorrei far si che in un colpo solo possa abilitare la suddetta pagina attraverso, immagino, apache.

    Ho trovato questo per il singolo sito inserendo per ogni hosts l'apposita parametrizzazione:

    RewriteEngine On
    RewriteCond %{REMOTE_ADDR} !127.0.0.1
    RewriteCond %{REQUEST_URI} !^/images/.*
    RewriteRule ^(.*)$ sito-in-manutenzione.html [QSA,L]
    

    Quello però di cui ho bisogno è farlo per TUTTI in un colpo solo.
    Immagino debba inserirlo nella main host, però non so come attivarlo obbligatoriamente per tutti i siti "figli" della root stessa, anche perchè per ognuno di loro vi è una riscrittura di alcune clausole (come lo stesso rewriteengine) che mi andrebbero deduco a riscrivere quello impostato nell'esempio sopracitato.


  • Moderatore

    Bellissimo il sito hackerato 😄

    Hai provato ad accedere senza www? Ci troverei un bel pò di geroglifici in arabo 😄 😄

    Vabbè comunque, riguardo la domanda ti servirebbe una cosa del genere

    RewriteEngine on
    
    RewriteCond %{HTTP_HOST} ^(ww+\.)?dom1\.com 
    RewriteRule ^(.*) http://www.dom0.com/manutenzione.html [R=302,L]
    
    RewriteCond %{HTTP_HOST} ^(ww+\.)?dom2\.com 
    RewriteRule ^(.*) http://www.dom0.com/manutenzione.html [R=302,L]
    
    

    ovviamente questa cosa va messa nel .htaccess nella root del webserver


  • Super User

    Si ho visto, per questo sto spostando tutto il vecchio server in uno nuovo, dato che il precedente era stato fatto 3 anni fa senza uno straccio di sicurezza non so bene come visto che non fui io a tirarlo su.

    Provo!


  • Super User

    Uhm..
    quello che non ho capito è se devo inserire manualmente ogni singolo dominio in rewriteCond e RewriteRule..

    non è possibile farlo in un colpo solo?

    O forse faccio prima a sostituire temporaneamente la lista di virtualhost con uno solo ma che mi punti ad una pagina in manutenzione?


  • Moderatore

    No, ovviamente puoi cambiare RewriteCond e fargli matchare tutti i domini.


  • Super User

    e come si fa? 😮 , o meglio qual'è la clausola ? 😄


  • Moderatore

    Usi ^(.*) al posto dei vari nomi di dominio.


  • Super User

    Ti ringrazio Paolino.

    Sfrutto la tua disponibilità per un'ultima domanda riguardo ad un mio dubbio.

    Permessi sul webserver. Siccome c'era un buco nella sicurezza del vecchio sistema, vorrei stare attento a non ripercorrere l'errore su questo nuovo server.

    Per apache ho impostato utente e gruppo unico: apache/apache.
    Tale utente è proprietario della cartella /srv/www/htdocs e in contemporanea delle cartelle ospitanti i siti nelle ovvie sottocartelle della root.

    Per ogni cartella di dominio vi è inoltre attribuito in privilegi lettura/scrittura/esecuzione abilitati un utente per l'accesso FTP.

    Sulle proprietà della cartella ho quindi:
    Owner: apache/apache
    Owning Group e Owner: controllo completo.
    Other: lettura ed esecuzione

    c'è qualcosa che non va?
    Apache è corretto che sia proprietario di tutte le cartelle compresa la root e abbia quindi l'accesso completo?


  • Moderatore

    Apache deve logicamente essere il proprietario o comunque potere leggere e scrivere in quelle directory, altrimenti non può fare il suo lavoro.


  • Super User

    Ma apache deve avere anche i permessi di scrittura? Non deve scrivere niente mi pare apache, solo leggere il contenuto no?


  • Moderatore

    @karedas said:

    Ma apache deve avere anche i permessi di scrittura? Non deve scrivere niente mi pare apache, solo leggere il contenuto no?

    se hai una gallery in cui fai uploadare delle foto, allora devi avere i permessi di scrittura


  • Super User

    Uhm,
    sono riuscito ad applicare la regola al fine di prendere tutti i siti, l'unico dubbio è che vorrei che appunto puntassero ad una cartella (unica) sotto la root di apache chiamata "CLOSE".

    Al suo interno ovviamente ho una index.html che mostra la pagina "sito in costruzione.

    Ma non riesco a puntarla... 😞


  • Moderatore

    Quella regola punta ad un nome di dominio, quindi dovresti avere un nome di dominio hostato nella root di apache.


  • Super User

    Quindi l'unica cosa che posso fare è mettere la pagina di sito chiuso all'interno del nostro sito aziendale (es: ...easysystem.it/close/index.html) e quindi farli redirigere tutti li.

    Ma non c'è nessun modo per fare si che il sito, qualsiasi esso sia, tramite una regola dell'htaccess mi cambi la root del dominio così prendendomi quale io voglia?


  • Moderatore

    No, apache non consente di settare la root di un dominio via .htaccess. E il bello/brutto è che usando un 302 devi per forza avere un dominio reale risolvibile da internet. Altrimenti potevi settare il file hosts con un dominio farlocco e usare quello.


  • Super User

    Capisco,
    come unica soluzione reale allora dovrei fare così:
    creare su easysystem un sottodominio: manutenzione.easysystem.it
    , dare al seguente un dns che punti ad un altro nostro server con sopra una cartella che ospiti una index di manutenzione e infine fare come tu hai detto.

    Se ho detto bene ti ringrazio per la disponibilità, anzi ti ringrazio comunque!


  • Moderatore

    si è così