Apache riscrive molteplici condizioni

Ho un sito web che è stato migrato da un vecchio nome di dominio (ad es. Olddomain.com) a un nuovo nome di dominio (ad es. Newdomain.com).

Per motivi di SEO, devo riscrivere tutto il traffico del sito web al nuovo nome di dominio primario (ad esempio www.newdomain.com). Purtroppo, non so come aggiungere più tipi di riscrittura di tipo OR. Sembra che con tutte le condizioni, codice di esempio qui sotto, ottengo una condizione AND.

  • Inversa traversa di taglio nella variabile DOCUMENT_ROOT in PHP quando si utilizza Apache
  • Come posso bloccare un agente utente da tutti i siti del mio server?
  • Quale exploit è questo?
  • Server sotto attacco DDOS - Come scoprire IP?
  • Il proxy apache semplice non funziona
  • Come elencare i moduli abilitati Apache?
  • <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName newdomain.com ServerAlias www.newdomain.com ServerAlias olddomain.com ServerAlias www.olddomain.com DocumentRoot /var/www/newdomain.com/www/ <Directory /> Options FollowSymLinks AllowOverride All </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn RewriteEngine on RewriteCond %{HTTP_HOST} ^olddomain.com [NC] RewriteCond %{HTTP_HOST} ^www.olddomain.com [NC] RewriteCond %{HTTP_HOST} ^newdomain.com [NC] RewriteRule ^/(.*)$ http://www.newdomain.com/$1 [R=301,NC] CustomLog /var/log/apache2/access.log combined </VirtualHost> 

    Qualcuno mi può dare un piccolo aiuto? Qualsiasi aiuto sarebbe molto apprezzato.

  • Sbattendo i file di registro .gz
  • Ottenere una statistica per CPU thread
  • Linux vpnc - Come definire un numero tunX specifico in vpnc
  • Sincronizzazione di Active Directory e OpenLDAP
  • Apache produce un sacco di errori solo SSL anche se i dati in-browser sembrano benissimo
  • Come faccio a impedire a GNU Screen di risolvere il mio prompt?
  • 2 Solutions collect form web for “Apache riscrive molteplici condizioni”

    Nonostante il fatto che hai già trovato il lavoro per la tua soluzione, continuerò a submit questo dato perché il tuo è ben lungi dall'essere ottimale.

    Soluzione # 1 : Sostituire [NC] con [NC,OR] nelle prime 2 righe RewriteCond del codice originale. Per impostazione predefinita, una RewriteCond è collegata ad un'altra RewriteCond da AND logica. Questo istruisce Apache per utilizzare la logica OR :

     RewriteCond %{HTTP_HOST} ^olddomain.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.olddomain.com [NC,OR] RewriteCond %{HTTP_HOST} ^newdomain.com [NC] RewriteRule ^/(.*)$ http://www.newdomain.com/$1 [R=301,L,NC] 

    Soluzione # 2 : dal momento che in totale sono presenti solo 4 nomi di dominio, sarà molto più semplice utilizzare l'approccio opposto – redirect da qualsiasi field, tranne quello corretto:

     RewriteCond %{HTTP_HOST} !^www.newdomain.com [NC] RewriteRule ^/(.*)$ http://www.newdomain.com/$1 [R=301,L,NC] 

    Ho appena trovato questo preventsvo:

    le righe di riscrittura si applicano solo al singolo rewriteRule che li segue.

    qui: http://www.webmasterworld.com/apache/3350200.htm

    Ecco la soluzione di lavoro per me:

      RewriteEngine on RewriteCond %{HTTP_HOST} ^olddomain.com [NC] RewriteRule ^/(.*)$ http://www.newdomain.com/$1 [R=301,NC] RewriteCond %{HTTP_HOST} ^www.olddomain.com [NC] RewriteRule ^/(.*)$ http://www.newdomain.com/$1 [R=301,NC] RewriteCond %{HTTP_HOST} ^newdomain.com [NC] RewriteRule ^/(.*)$ http://www.newdomain.com/$1 [R=301,NC] 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.