Domanda

I miei clienti vogliono utilizzare reindirizzamenti 301 per forzare il sottodominio 'www' sui loro siti. Così 'example.com/something' delibera di 'www.example.com/somthing' etc.

Quello che sto cercando di fare è semplicemente aggiungere questo al mio file vhost:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost     
  ServerName  example.com
  ServerAlias www.*
  DocumentRoot /data/apps/example.com/current/public
  RailsBaseURI / 

  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^example\.com
  RewriteRule ^ http://www.example.com%{REQUEST_URI} [L,R=301]
</VirtualHost>

Ho anche assicurato che mod rewrite è stata abilitata tramite:

sudo a2enmod rewrite
sudo /etc/init.d/apache2 force-reload

Il risultato dei miei sforzi attuali appare in fondo per avere successo. Apache viene riavviato e tutto funziona come previsto tranne la riscrittura non sta accadendo. Così sia 'www.example.com' e 'example.com' determinazione. Il browser non viene reindirizzato a 'www.example.com' quando dovrebbe. Qualche idea? Ho provato a ricaricare la configurazione e riavviando Apache diverse volte, ma io non riesco a ottenere le regole di riscrittura di lavoro. Sto installando loro nel posto sbagliato mettendo loro qui nel vhost invece di un file .htaccess?

Qualche consiglio qui sarebbe utile. Io sono completamente sconcertato.

È stato utile?

Soluzione

Mettere questo sotto la voce VirtualHost principale:

<VirtualHost *:80>
    ServerName example.com
    RedirectMatch permanent ^/(.*) http://www.example.com/$1
</VirtualHost>

È principale VirtualHost dovrebbe avere un ServerName www.example.com ingresso e nessun alias o reindirizzamenti. Inoltre, mod_rewrite non è richiesto per questo reindirizzamento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top