.htaccess Rimuovi WWW da URL + directory

Questo sembra essere un non-problema per molte persone (leggi: non riesco a trovare una risposta), ma vorrei aggiornare il seguente codice htaccess per rimuovere non solo il “www” dall’URL, ma anche qualsiasi directory a cui si accede.

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

Con questo, http://www.example.com/any/ si risolve correttamente, ma desidero redirect a http://example.com/any/ come con la radice.

Ho avuto lo stesso problema (problema che rimuove “www” dagli URL che puntano a una sottodirectory su un dominio aggiuntivo), ma dopo alcuni tentativi ed errori, questo sembra funzionare per me:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L] 

Esempio: http://www.addondomain.com/projects/a/gallery/4/2

Codice di reindirizzamento per entrambi non www => www e opposto www => non-www. Nessun dominio e schema hardcoding nel file .htaccess. Quindi verranno mantenuti il ​​dominio di origine e la versione http / https.

APACHE 2.4 E NEWER

NON-WWW => WWW:

 RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ %{REQUEST_SCHEME}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

WWW => NON-WWW:

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

Nota: non funziona su Apache 2.2 dove% {REQUEST_SCHEME} non è disponibile. Per compatibilità con Apache 2.2 usa il codice qui sotto o sostituisci% {REQUEST_SCHEME} con http / https fisso.


APACHE 2.2 E NEWER

NON-WWW => WWW:

 RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] RewriteCond %{HTTPS} on RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

… o versione più breve …

 RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTPS}s ^on(s)|offs RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

WWW => NON-WWW:

 RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L] RewriteCond %{HTTPS} on RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L] 

… versione più breve non ansible perché% N è disponibile solo dall’ultimo RewriteCond …

Penso che tu sia vicino, ma prova quanto segue:

 # force non-www domain RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule (.*) http://example.com/$1 [R=301,L] 

Non sei sicuro di cosa intendi con le sottodirectory, ma questo segue il tuo esempio.

L’ho usato e ha funzionato per me

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

Esempio: http://www.locphen.vn/he-thong-loc-nuoc-gieng.html -> http://locphen.vn/he-thong-loc-nuoc-gieng.html

Io uso questo codice Se il mio visitatore non ha www nel suo url allora questa condizione aggiunge www con url, altrimenti non c’è bisogno di aggiungere www con url (perché ha già 🙂 :))

 RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.YOUR-SITE\.com$ [NC] RewriteRule ^(.*) http://www.YOUR-SITE.com/$1 [L,R] 

Ciao, il codice funziona perfettamente, tranne che passa con il www in un url con qualche valore e barra alla fine mostra il parametro e il valore nell’URL.

RewriteEngine On SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE text/html text/plain text/xml RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(!.(\.gif|\.jpg|\.png|\.swf|\.css|\.js|\.txt|\.php|\.htm|\.html)|.+[^/])$ /$1/ [R=301,NC] RewriteRule ^(.[^.*]+)\/$ ?jogar=$1 [NC] Options -Indexes Options +FollowSymLinks RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http:\/\/%1%{REQUEST_URI} [R=301,QSA,NC,L]