Apache mod_rewrite aggiungendo il taglio aggiuntivo alla fine dell'URL

Sto eseguendo CentOS 6.0 e sto cercando di fare mod_rewrite rimuovere il www da qualsiasi URL prefixed con esso. Ecco il codice che ho nel mio httpd.conf:

NOTA: Sto utilizzando un VPS con accesso completo a root, quindi non sto utilizzando file .htaccess o alcuna impostazione "per-directory".

RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.aaronjwood\.com$ RewriteRule ^(.*)$ http://aaronjwood.com/$1 [R=301,L] 

Questo funziona bene per tutte le pagine tranne che l'URL sarà scritto a http://aaronjwood.com// (nota le due barre) o http://aaronjwood.com//contact.php . Qualcuno può aiutarmi a capire perché questo sta succedendo?

  • Perché due pattern (/.*) e (. *) Corrispondono a diverse stringhe?
  • Apache - reindirizzamento di httpd.conf con X-Forward-For - Non funziona?
  • htaccess sostituisce l'URL completo anziché REQUEST_URI
  • Forza SSL per each URL tranne un path che utilizza .htaccess
  • Devo riscrivere https://domain.com => https://www.domain.com a causa della SSL jolly
  • Apache Virtual Host dinamico con SSL
  • Come passare una richiesta da un server Apache a un altro
  • come riscrivere '% 25' in url
  • 2 Solutions collect form web for “Apache mod_rewrite aggiungendo il taglio aggiuntivo alla fine dell'URL”

    Poiché è nel file di configuration principale, e non una per-directory ( <Directory> o .htaccess ), allora la barra principale non viene eliminata per il context. In realtà sta aggiungendo (o cercando di aggiungere – non è sicuro se Apache sta rimuovendo l'extra nella maggior parte dei casi, o se il browser client è) la seconda slash a each riscrittura.

    Basta considerare il fatto che la barra principale è inclusa nella string che corrispondi:

     RewriteRule ^/(.*)$ http://aaronjwood.com/$1 [R=301,L] 

    Dal momento che è direttamente in un vhost, ecco la soluzione: rimuovi la slash qui: http://aaronjwood.com$1

    Un altro suggerimento: quando da sola, ^(.*)$ È uguale a (.*) .

    Ecco la soluzione:

     RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.aaronjwood\.com$ RewriteRule (.*) http://aaronjwood.com$1 [R=301,L] 

    Per favore dimmi se ha funzionato.

    Olivier

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.