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.

<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.

  • Come ridurre al minimo l'effetto delle richieste POST pericolose e persistenti
  • La regola RewriteBase funziona in .htacess, ma non in httpd.conf (dentro <Directory ...>)?
  • Perché reindirizza .htaccess lavoro in http ma non con https?
  • Apache Rewrite Regola non corrispondente al Colon (:)
  • apache mod_rewrite help: scrittura di un'exception a una regola di riscrittura
  • Un modo semplice per redirect http://example.com a http://example.com/mylink con Apache?
  • Come portre Apache a riscrivere le regole a cherokee?
  • Reindirizzare i routes a shebang attraverso .htaccess?
  • 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.