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.

  • Creare un sotto-dominio utilizzando Amazon AWS vs Creare il sotto-dominio dall'interno del server - Qual è la differenza?
  • Balancers di carico con host virtuali basati su nome
  • Wildcard non funziona per il dominio secondario?
  • La pagina Web si blocca sul ricarica / aggiornamento
  • Core CPU e lavoratori / maxserver
  • Utilizzando Mod_rewrite e l'authentication su tutti gli URL in arrivo
  • <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.

  • Visualizzazione del contenuto di un repository Subversion
  • Reimpostare la password dell'utente senza radice
  • Qual è l'equivalente di <Location> in .htaccess?
  • Come elencare i supporti sshfs attuali sul server?
  • Come posso triggersre i moduli apache dalla row di command in RedHat?
  • File di registro Apache other_vhosts_access.log e access.log
  • 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.