.htaccess reescribir en subcarpeta con codeigniter rewrite
Frecuentes
Visto 1,462 equipos
0
Tengo un sitio que debe existir en una subcarpeta
example.com/site
Pero estoy tratando de usar .htaccess para eliminar cualquier enlace que contenga www (para asegurarme de que codeigniter csrf no arroje errores), así que agregué
RewriteCond %{HTTP_HOST} ^(www\.example\.com)?$
RewriteRule ^(.*)$ http://example.com/site/$1 [R=301,L]
Esto funciona bien cuando se especifica un identificador de página, por lo que
www.example.com/site/book rewrites to example.com/site/book
Pero cuando no hay un identificador de página especificado, obtengo un 404
www.example.com/site rewrites to example.com/site//usr/local/pem/vhosts/103480/webspace/httpdocs/new
Me preguntaba si alguien podría señalarme en la dirección correcta.
Este es mi .htaccess completo
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.example\.com)?$
RewriteRule ^(.*)$ http://example.com/site/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
2 Respuestas
1
Puede intentar esto en su lugar:
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{REQUEST_URI} ^/(.*) [NC]
RewriteRule .* http://example.com/%1 [R=301,L]
Respondido 23 Abr '13, 16:04
Gracias por tu respuesta. Lo que ha sugerido no incluye la redirección a la subcarpeta, y cuando lo vuelvo a agregar RewriteRule ^(.*) http://example.com/site/$1 [R=301,L]
se reescribe en la misma URL que se menciona en la pregunta al intentar acceder www.example.com/site
- jasonm
El código en mi respuesta elimina www
de la solicitud. Eso es todo. Ahora, ¿quieres redirigir todo al directorio? /site
? Si es así, primero debe asegurarse de que la solicitud no sea para /site
. Puedo actualizar mi respuesta si explica más en detalle lo que quiere. - Felipe Alameda A.
Quiero redirigir la solicitud como: www.ejemplo.com/sitio => ejemplo.com/sitio y www.ejemplo.com/sitio/libro => ejemplo.com/sitio/libro Lo que tengo funciona para el segundo caso, pero no para el primero - jasonm
Bueno, eso es exactamente lo que hace el código en mi respuesta. Solo quita el www
y mantiene la ruta URI según lo solicitado. No tienes que añadir nada. Reemplace las 2 líneas superiores en su pregunta con las de mi respuesta. - Felipe Alameda A.
¡Eso es todo! Gracias de nuevo por su tiempo (¡y paciencia!) - jasonm
1
Tal vez, solo te falta un RewriteBase
Dependiendo de donde .htaccess
el archivo es, intente cualquiera
RewriteBase /
or
RewriteBase /site
Nunca prueba con 301
habilitado, vea esta respuesta
Consejos para depurar las reglas de reescritura de .htaccess
para más detalles.
contestado el 23 de mayo de 17 a las 12:05
Gracias por el enlace olaf, será una buena lectura para mí para tratar de mejorar en esta área. jasonm
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas .htaccess codeigniter mod-rewrite codeigniter-2 or haz tu propia pregunta.
¿Tiene un archivo htaccess adicional en el
site
¿subdirectorio? - Olaf DietscheSí, el .htaccess en cuestión está en el
site
subdirectorio, lo siento, debería haber sido más claro. Sin embargo, la respuesta actualizada de faa ha resuelto mi problema: JasonM