Estoy tratando de lograr una redirección URL básica para las URL bonitas, y debido a las imágenes, CSS, etc. que también residen en la misma ruta, necesito asegurarme de que si la URL es se accede sin una barra inclinada, se agrega automáticamente.Cómo hacer una redirección mod_rewrite a la URL relativa
Esto funciona bien si pongo la URL absoluta de esta manera:
RewriteRule ^myParentDir/([A-Z0-9_-]+)$ http://www.mydomain.com/myParentDir/$1/ [R,nc,L]
Pero si puedo cambiar esto a una dirección URL relativa, de modo que no tengo que cambiar cada vez que se mueven las cosas en carpetas , esto simplemente no funciona.
Estos son lo que he intentado todo y no funcionan, o que me vuelven a dirigir a la ruta del directorio interno real del servidor como/public_html/...:
RewriteRule ^myParentDir/([A-Z0-9_-]+)$ ./myParentDir/$1/ [R,nc,L]
RewriteRule ^myParentDir/([A-Z0-9_-]+)$ myParentDir/$1/ [R,nc,L]
¿Cuál es la forma correcta de hacer una una dirección URL de modo que si el usuario introduce algo como:
http://www.mydomain.com/somedir/myVirtualParentDir/myVirtualSubdir
que se le redirecciona a (a través de HTTP 301 o 302):
http://www.mydomain.com/somedir/myVirtualParentDir/myVirtualSubdir/
Gracias.
EDIT: Agregando algunos más detalles porque no parece estar claro. Digamos que estoy implementando una galería, y quiero tener URL bonitas usando mod_rewrite. lo tanto, me gustaría tener las URL de la siguiente manera:
http://www.mydomain.com/somedir/galleries/cats
que muestra miniaturas de los gatos, mientras que:
http://www.mydomain.com/somedir/galleries/cats/persian
que muestra una imagen de las imágenes en miniatura de todos los gatos, el nombre persa. Así que, en realidad, la estructura de directorios física y reescribir sería la siguiente:
http://www.domain.com/somedir/gallery.php?category=cats&image=persian
Así que lo que quiero hacer es poner un archivo .htaccess en/somedir que atrapa todas las solicitudes realizadas a/galerías y en función de la subdirectorios virtuales que le sigue, los utilizan como marcadores de posición en la reescritura, con reglas 2 de reescritura:
RewriteRule ^galleries/(A-Z0-9_-]+)/$ ./gallery.php?category=$1 [nc]
RewriteRule ^galleries/(A-Z0-9_-]+)/+([A-Z0-9_-]+)$ ./gallery.php?category=$1&image=$2 [nc]
Ahora el problema es que el script de galería, de hecho, necesita un poco de CSS, Javascript y las imágenes, situada en http://www.domain.com/somedir/css, http://www.domain.com/somedir/js y http://www.domain.com/somedir/images respectivamente.
No quiero codificar ninguna URL absoluta, por lo que se hará referencia a CSS, JS e Imágenes usando URL relativas, (./css, ./js, ./images, etc.). Por lo que puedo hacer URL reescritura de la siguiente manera:
RewriteRule ^galleries/[A-Z0-9_-]+/css/(.*)$ ./css/$1 [nc]
El problema es que desde http://www.domain.com/somedir/galleries/cats es un directorio virtual, lo anterior sólo funciona si el usuario escribe:
http://www.domain.com/somedir/gallaries/cats/
Si el usuario omite la barra final mod_dir no lo agregará porque en realidad este directorio no existe.
Si pongo una reescritura de redirección con la URL absoluta funciona:
RewriteRule ^galleries/([A-Z0-9_-]+)$ http://www.mydomain.com/subdir/galleries/$1/ [R,nc,L]
Pero no quiere tener el prefijo URL codificada porque quiero ser capaz de poner esto en cualquier dominio que quiero en cualquier subdirectorio que quiero, así que he intentado esto:
RewriteRule ^galleries/([A-Z0-9_-]+)$ galleries/$1/ [R,nc,L]
Pero en lugar redirecciona a:
http://www.mydomain.com/home/myaccount/public_html/subdir/galleries/theRest
que obviamente no es lo que quiero.
EDIT: aclaración adicional
La solución que estoy buscando es evitar codificar el nombre de dominio o rutas de las carpetas de .htaccess. Estoy buscando una solución donde si empaque el .htaccess con el resto de las secuencias de comandos y los recursos, donde el usuario lo descomprime en su servidor web funciona de la caja. Todo funciona así, aparte de este problema de corte final.
Por lo tanto, cualquier solución que implique la codificación de hardware del directorio principal o la ruta del servidor web en .htaccess de ninguna manera no es lo que estoy buscando.
@DoktorJ ¿La edición en mi post responde a su pregunta? –
Debe elegir su respuesta aceptada, si alguno de estos aquí ayudó. – sjas