Tratando de conseguir
www.example.com
ir directamente a
www.example.com/store
He intentado varios bits de código y ninguno funciona.
Lo que probé:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(.+)\www.example\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]
¿Qué estoy haciendo mal?
.htaccess
mod-rewrite
redirect
Willi Mentzel
fuente
fuente
Me sorprendió que nadie mencionara esto:
Básicamente, redirige la raíz y solo la URL raíz. La respuesta se originó en este enlace.
fuente
RedirectMatch 301 ^/$ /store/
Prueba esto:
Si desea una redirección externa (que hace que el navegador visitante muestre la URL redirigida), configure también el
R
indicador allí:fuente
www.example.com
como el URI después de la redirección? Si no, ¿cómo se cambiaría para hacerlo?RewriteCond
y el primeroRewriteRule
?/aboveSubDir
el navegador o el servidor.Esto es lo que solía redirigir a un subdirectorio. Esto lo hizo de forma invisible y aún permite solicitudes que coinciden con un archivo existente o lo que sea.
Cambie site.com y subdirectorio con sus valores.
fuente
Para establecer una redirección invisible desde la raíz a la subcarpeta, puede usar la siguiente RewriteRule en /root/.htaccess:
La regla anterior redirigirá internamente el navegador desde:
a
Y
a
mientras que el navegador permanecerá en la carpeta raíz.
fuente
Otra alternativa si desea reescribir la URL y ocultar la URL original:
Con esto, si por ejemplo escribe
http://www.example.com/product.php?id=4
, se abrirá el archivo de manera transparente en,http://www.example.com/store/product.php?id=4
pero sin mostrar al usuario la url completa.fuente
QSA
(cadena de consulta anexar) a[L]
([L, QSA]
) si desea que las cadenas de consulta se transfieran a la url reescrita.Esta parecía la solución más simple:
Estaba recibiendo bucles de redireccionamiento con algunas de las otras soluciones.
fuente
No entiendo tu pregunta ...
Si desea redirigir cada solicitud a una subcarpeta:
Si desea redirigir a una subcarpeta que tiene el nombre de dominio
fuente
([^\.]+\.[^\.]+)$
para reservar dominio como nombre de subcarpeta.He descubierto que para evitar la redirección circular, es importante limitar el alcance de la redirección al directorio raíz. Yo hubiera usado:
fuente
La mayoría de las soluciones anteriores son correctas, pero a todas les falta la transparencia de la redirección.
En mi caso, cuando visité www.example.com quería ser redirigido al subdirectorio / tienda pero sin actualizar la URL a www.example.com/store . (Todo lo que quiero es obtener el código de la página de ese directorio). Si ese es su caso, la solución a continuación funciona perfectamente.
fuente: http://wiki.dreamhost.com/Transparently_redirect_your_root_directory_to_a_subdirectory
fuente
RewriteRule ^(.*)$ http://otherpage.com/subfolder/$1 [L]
pero actualiza la URLexample
ystore
.example.com
yotherpage.com
dominios. Cuando visitoexample.com
quiero que se muestre el contenidootherpage.com/subfolder
, sin actualizar la URLTambién se puede usar Redirect para este propósito
O alias para mapeo
Editar: mod_alias solo es aplicable en httpd.conf.
Referencias
fuente
Anteriormente utilizo el siguiente código, que funciona correctamente para redirigir la URL raíz de cada uno de mis dominios / subdominios a sus subdirectorios de correspondencia que se nombran exactamente como el sub / dominio en sí mismo, como se muestra a continuación:
Sin embargo, cuando quiera agregar otros subs o dominios, será necesario agregarlos en el código anterior. Debería ser mucho más conveniente simplificarlo para que funcione como comodín (*) como se muestra a continuación:
Entonces, cada vez que se agreguen otros subdominios / dominios, siempre que el nombre del subdominio tenga un prefijo de sub (como: sub3.domain1.com, sub1.domain3.com, etc.) el código seguirá siendo válido.
fuente
Creo que los principales problemas con el código que publicaste son:
la primera línea coincide en un host que comienza estrictamente con sample.com, por lo que www.sample.com no coincide.
la segunda línea quiere al menos un personaje, seguido de www.sample.com que tampoco coincide (¿por qué escapaste de la primera w?)
ninguna de las reglas incluidas redirige a la url que especificó en su objetivo (además, la muestra está mal escrita como samle, pero eso es irrelevante).
Como referencia, aquí está el código que tiene actualmente:
fuente
Un poco de google, me da estos resultados:
O prueba esto:
No he hecho mucha redirección en el archivo .htaccess, así que no estoy seguro de si esto funcionará.
fuente
Dos formas de obtener posibles soluciones para lograr esto son: 1. Cree un
.htaccess
archivo en la carpeta raíz como se indica a continuación (solo reemplace example.com y my_dir con sus valores correspondientes):Use RedirectMatch para redirigir la URL raíz "/" a otra carpeta o URL,
RedirectMatch ^ / $ http://www.example.com/my_dir
fuente
intente usar las siguientes líneas en htaccess
Nota: es posible que deba verificar cuál es el nombre de default.html
default.html es el archivo que se carga por defecto en la carpeta raíz.
RewriteEngine
Redirect /default.html http://example.com/store/
fuente
solo agrega este código a su archivo .htaccess
fuente
Contestaré la pregunta original no señalando otra sintaxis posible (hay muchas entre las otras respuestas) sino señalando algo con lo que una vez tuve que lidiar, que me llevó un tiempo descubrir:
Existe la posibilidad de que% {HTTP_HOST} no se complete correctamente o que no se complete. Aunque, solo he visto que esto ocurre en una sola máquina en un host compartido, con algunos parches personalizados apache 2.2, sin embargo, es una posibilidad.
fuente
Esto probará el subdirectorio si el archivo no existe en la raíz. Lo necesitaba cuando moví un sitio web .html básico que espera ejecutarse en el nivel raíz y lo empujé a un subdirectorio. Solo funciona si todos los archivos son planos (no es posible el truco .htaccess en el subdirectorio). Útil para cosas vinculadas como archivos css y js.
fuente