www working only not non htaccess apache mod-rewrite url-rewriting

apache - working - Generic htaccess redirect www a non-www



redirect www to non www htaccess (21)

Aquí están las reglas para redireccionar una URL de www a no-www:

######################### # redirect www to no-www ######################### RewriteCond %{HTTP_HOST} ^www/.(.+) [NC] RewriteRule ^(.*) http://%1/$1 [R=301,NE,L]

Aquí están las reglas para redireccionar una URL no-www a www:

######################### # redirect no-www to www ######################### RewriteCond %{HTTP_HOST} ^(?!www/.)(.+) [NC] RewriteRule ^(.*) http://www.%1/$1 [R=301,NE,L]

Tenga en cuenta que usé la bandera NE para evitar que Apache escape la cadena de consulta. Sin este indicador, apache cambiará la URL solicitada http://www.example.com/?foo%20bar a http://www.example.com/?foo%2250bar

Me gustaría redirigir www.example.com a example.com . El siguiente código htaccess hace que esto suceda:

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

Pero, ¿hay una manera de hacer esto de manera genérica sin codificar el nombre de dominio?


Completo controlador WWW genérico, http / https

No vi una respuesta completa. Uso esto para manejar la inclusión de WWW.

  1. Genérico. No requiere información de dominio.
  2. Fuerzas WWW en dominio primario: www.domain.com
  3. Elimina WWW en subdominios: sub.dominio.com
  4. Conserva el estado HTTP / HTTPS.
  5. Permite cookies individuales para dominio / subdominios

Por favor, hágamelo saber cómo funciona esto o si dejé una laguna.

RewriteEngine On RewriteBase / # Force WWW. when no subdomain in host RewriteCond %{HTTP_HOST} ^[^.]+/.[^.]+$ [NC] RewriteCond %{HTTPS}s ^on(s)|off [NC] RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # Remove WWW. when subdomain(s) in host RewriteCond %{HTTP_HOST} ^www/. [NC] RewriteCond %{HTTPS}s ^on(s)|off [NC] RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www/.)(.+/.)(.+/.)(.+)$ [NC] RewriteRule ^ %1%3%4%5%{REQUEST_URI} [R=301,L]


Esto se actualiza para trabajar en Apache 2.4:

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

El único cambio contra el de Michael''s es eliminar el [NC] , que produce el error "AH00665":

La opción NoCase para el patrón no regex ''-f'' no es compatible y se ignorará


Hola, puedes usar las siguientes reglas en tu archivo htaccess:

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


La única manera de hacerlo funcionar ...

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


La respuesta seleccionada y muchas otras soluciones aquí eliminaron la parte de la url después de /, por lo que básicamente, siempre se redirige al dominio principal, al menos para mí. Así que estoy agregando una muestra de trabajo que respeta la ruta completa después de la barra diagonal.

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


No estoy seguro de por qué quieres eliminar www. Pero la versión inversa sería:

# non-www.* -> www.*, if subdomain exist, wont work RewriteCond %{HTTP_HOST} ^whattimein/.com RewriteRule ^(.*)$ http://www.whattimein.com/$1 [R=permanent,L]

Y la ventaja de este script es: si tienes algo como test.whattimein.com o cualquier otro (entorno para desarrollo / prueba) no redirigirá U al entorno original.


Para aquellos que necesitan poder acceder a todo el sitio SIN el prefijo ''www''.

RewriteCond %{HTTP_HOST} ^www/.(.+)$ [NC] RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]

Mare seguro que agrega esto al siguiente archivo

/site/location/.htaccess


Pero si necesitamos hacer esto para http y https separados:

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


Prueba esto:

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

Si el host comienza con www, pegamos todo el host al inicio de la URL, luego quitamos el "www".


Puedo encontrar mucha información errónea sobre los redireccionamientos de htaccess. En primer lugar, asegúrese de que su sitio se ejecute en Unix utilizando Apache y no en un host de Windows si espera que este código funcione.

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

(Sin embargo, asegúrese de que no haya espacios de línea entre cada línea de texto; he agregado un espacio adicional entre líneas para que se vea bien en esta ventana).

Este es un fragmento de código que puede usarse para dirigir la versión www de su sitio a la versión http: //. También hay otros códigos similares que pueden usarse.


Redirigir no www a www (ambos: http + https)

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



Si estás forzando a www. en url o forzando ssl prototcol, luego intente usar posibles variaciones en el archivo htaccess, como:

RewriteEngine On RewriteBase / ### Force WWW ### RewriteCond %{HTTP_HOST} ^example/.com RewriteRule (.*) http://www.example.com/$1 [R=301,L] ## Force SSL ### RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://example.com/$1 [R,L] ## Block IP''s ### Order Deny,Allow Deny from 256.251.0.139 Deny from 199.127.0.259


Utilicé la regla anterior para fwd www a no www y funciona bien para la página de inicio, sin embargo, en las páginas internas se reenvían a /index.php

Encontré esta otra regla en mi archivo .htaccess que está causando esto pero no estoy seguro de qué hacer al respecto. Cualquier sugerencia seria genial:

############################################ ## always send 404 on missing files in these folders RewriteCond %{REQUEST_URI} !^/(media|skin|js)/ ############################################ ## never rewrite for existing files, directories and links RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l ############################################ ## rewrite everything else to index.php RewriteRule .* index.php [L]


uso: Javascript / jQuery

// similar behavior as an HTTP redirect window.location.replace("http://www..com"); // similar behavior as clicking on a link window.location.href = "http://.com";

O .htaccess:

RewriteEngine On RewriteBase / Rewritecond %{HTTP_HOST} ^www/.yoursite/.com$ [NC] RewriteRule ^(.*)$ https://yoursite.com/$1 [R=301,L]

y el método PHP:

$protocol = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://"; if (substr($_SERVER[''HTTP_HOST''], 0, 4) !== ''www.'') { header(''Location: ''.$protocol.''www.''.$_SERVER [''HTTP_HOST''].''/''.$_SERVER[''REQUEST_URI'']); exit; }

Ajax

$.ajax({ type: "POST", url: reqUrl, data: reqBody, dataType: "json", success: function(data, textStatus) { if (data.redirect) { // data.redirect contains the string URL to redirect to window.location.href = data.redirect; } else { // data.form contains the HTML for the replacement form $("#myform").replaceWith(data.form); } } });


www to non www con https

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


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

Para subcarpeta


RewriteCond %{HTTP_HOST} ^www/.(.*)$ [NC] RewriteRule ^/(.*)$ http://%1/$1 [R]

El RewriteCond captura todo en la variable HTTP_HOST después de "www". y lo guarda en% 1. La RewriteRule captura la URL (sin líder "/") y la guarda en $ 1.


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

Igual que el de Michael''s excepto que éste funciona: P


RewriteEngine on # if host value starts with "www." RewriteCond %{HTTP_HOST} ^www/. # redirect the request to "non-www" RewriteRule ^ http://example.com%{REQUEST_URI} [NE,L,R]

Si desea eliminar www en http y https , use lo siguiente:

RewriteEngine on RewriteCond %{HTTP_HOST} ^www/. RewriteCond %{HTTPS}s ^on(s)|offs RewriteRule ^ http%1://example.com%{REQUEST_URI} [NE,L,R]

Esto redirige Non ssl

a

Y SSL

a

en apache 2.4.* puedes lograr esto usando una directiva Redirect con if ,

<if "%{HTTP_HOST} ==''www.example.com''"> Redirect / http://example.com/ </if>