.htaccess Eliminar WWW de URL + Directorios

Esto parece no ser un problema para muchas personas (léase: no puedo encontrar una respuesta), pero me gustaría actualizar el siguiente código htaccess para no solo eliminar el ‘www’ de la URL, sino también cualquier subtítulo directorios a los que se accede.

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

Con esto, http://www.example.com/any/ resuelve bien, pero quiero que se redireccione a http://example.com/any/ como con la raíz.

Tuve el mismo problema (problemas para eliminar ‘www’ de las URL que apuntan a un subdirectorio en un dominio complementario), pero después de algunas pruebas y errores, esto parece funcionar para mí:

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

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

Código de redireccionamiento para ambos, no www => www y opuesto www => no www. No hay dominios y esquemas de hardcoding en el archivo .htaccess. Por lo tanto, se conservarán el dominio de origen y la versión http / https.

APACHE 2.4 Y MÁS NUEVO

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: no funciona en Apache 2.2 donde% {REQUEST_SCHEME} no está disponible. Para compatibilidad con Apache 2.2 use el siguiente código o reemplace% {REQUEST_SCHEME} con http / https fijo.


APACHE 2.2 Y MÁS NUEVO

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 una versión más corta …

 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] 

… la versión más corta no es posible porque% N está disponible solo desde la última RewriteCond …

Creo que estás cerca, pero intenta lo siguiente:

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

No estoy seguro exactamente qué quiere decir con los subdirectorios, pero esto sigue su ejemplo.

Lo usé y funcionó para mí

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

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

Yo uso este código Si mi visitante no tiene www en su url, esta condición agrega www con url, de lo contrario no es necesario agregar www con url (porque ya lo ha hecho :))

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

Hola, el código funciona perfectamente, excepto que pasa con el www en una url con algún valor y una barra al final muestra el parámetro y el valor en la 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]