¿Cómo hacer que Apache busque archivos en diferentes subcarpetas?

¿Cómo hacer que Apache busque archivos en diferentes subcarpetas?

Definitivamente soy nuevo en esto de la reescritura de mods.

Nota: aquí la URL es común y todas las carpetas y subcarpetas están en el mismo host.

La URL que utiliza un usuario para acceder a su página eshttp://myurl.com/1234/filename.jpg

Aquí el nombre de la subcarpeta es un número entero, único y generado dinámicamente por otra aplicación.

La subcarpeta almacena imágenes específicas de un usuario individual.

Entonces la estructura de carpetas es la siguiente

main1 = document root
main2 is another folder within main1 or document root.

/main1/1234/filename.jpg
/main1/5678/filename.jpg
/main1/2345/filename.jpg
/main1/1212/filename.jpg
/main1/main2/2367/filename.jpg
/main1/main2/8790/filename.jpg
/main1/main2/9966/filename.jpg

Entonces, quiero escribir una regla de reescritura para que si un usuario intenta escribir

http://myurl.com/1234/filename.jpg,

la regla de reescritura deberá buscar dónde está el archivo y atender la solicitud; entonces, para la solicitud http:/myurl.com/1234/filename.jpg, la página real se encuentra en /main1/1234/filename.jpg y luego debe servir esa página desde esa carpeta.

Entonces, si otro usuario hace una solicitud comohttp://myurl.com/9966/nombredearchivo.jpg, debería servir la página desde el siguiente destino /main1/main2/9966/filename.jpg

Avíseme si la pregunta aún no está clara.

Esto es lo que he hecho hasta ahora y no funciona en absoluto.

RewriteCond         {DOCUMENT_ROOT}/%{REQUEST_FILENAME}  -f
RewriteRule  ^(.*)$ {DOCUMENT_ROOT}/$1  [L]  
RewriteCond         {DOCUMENT_ROOT}/main2/%{REQUEST_FILENAME}  -f
RewriteRule  ^(.*)$ {DOCUMENT_ROOT}/main2/$1  [L]

cualquier ayuda es realmente agradecida

EDITAR @ShaneMadden, busque los detalles. La configuración se encuentra en el archivo .htaccess; por favor encuentre los detalles de .htaccess

RewriteEngine on 
RewriteCond %{REQUEST_URI} ^/main1/\/. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(main1)(/\/.+)$ $1/main2/\$2

EDITAR:

Olivier, gracias por ayudarme. Encuentre los detalles a continuación.

httpd.conf

DocumentRoot  "/WebServer/Documents"

Lista de directorios

ls -lRt /WebServer/Documents/

-rw-r--r--   index.html 
-rw-r--r--   .htaccess
drwxrwxrwx main1
drwxrwxrwx 456231 (Is a folder)


./WebServer/Documents/main1/:
drwxrwxrwx 566432

./WebServer/Documents/456231/:
-rwxrwxrwx  one.jpg

./WebServer/Documents/main1/566432:
-rwxrwxrwx one.jpg

Archivos .htaccess

RewriteEngine on

RewriteCond  %{DOCUMENT_ROOT}/%{REQUEST_FILENAME}  -f
RewriteRule  (.*) %{DOCUMENT_ROOT}/$1  [L]
RewriteCond  %{DOCUMENT_ROOT}/main1/%{REQUEST_FILENAME}  -f
RewriteRule  (.*) %{DOCUMENT_ROOT}/main1/$1  [L]

URL de acceso -->http://localhost:80/

::1 - - [26/Nov/2011:10:52:54 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (3) [perdir /WebServer/Documents/] strip per-dir prefix: /WebServer/Documents/ -> 
::1 - - [26/Nov/2011:10:52:54 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (3) [perdir /WebServer/Documents/] applying pattern '(.*)' to uri ''
::1 - - [26/Nov/2011:10:52:54 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (4) [perdir /WebServer/Documents/] RewriteCond: input='/WebServer/Documents//WebServer/Documents/' pattern='-f' => not-matched
::1 - - [26/Nov/2011:10:52:54 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (3) [perdir /WebServer/Documents/] strip per-dir prefix: /WebServer/Documents/ -> 
::1 - - [26/Nov/2011:10:52:54 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (3) [perdir /WebServer/Documents/] applying pattern '(.*)' to uri ''
::1 - - [26/Nov/2011:10:52:54 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (4) [perdir /WebServer/Documents/] RewriteCond: input='/WebServer/Documents/main1//WebServer/Documents/' pattern='-f' => not-matched
::1 - - [26/Nov/2011:10:52:54 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (1) [perdir /WebServer/Documents/] pass through /WebServer/Documents/
::1 - - [26/Nov/2011:10:52:54 +0000] [localhost/sid#10090f128][rid#10099c8a8/subreq] (3) [perdir /WebServer/Documents/] strip per-dir prefix: /WebServer/Documents/index.html -> index.html
::1 - - [26/Nov/2011:10:52:54 +0000] [localhost/sid#10090f128][rid#10099c8a8/subreq] (3) [perdir /WebServer/Documents/] applying pattern '(.*)' to uri 'index.html'
::1 - - [26/Nov/2011:10:52:54 +0000] [localhost/sid#10090f128][rid#10099c8a8/subreq] (4) [perdir /WebServer/Documents/] RewriteCond: input='/WebServer/Documents//WebServer/Documents/index.html' pattern='-f' => not-matched
::1 - - [26/Nov/2011:10:52:54 +0000] [localhost/sid#10090f128][rid#10099c8a8/subreq] (3) [perdir /WebServer/Documents/] strip per-dir prefix: /WebServer/Documents/index.html -> index.html
::1 - - [26/Nov/2011:10:52:54 +0000] [localhost/sid#10090f128][rid#10099c8a8/subreq] (3) [perdir /WebServer/Documents/] applying pattern '(.*)' to uri 'index.html'
::1 - - [26/Nov/2011:10:52:54 +0000] [localhost/sid#10090f128][rid#10099c8a8/subreq] (4) [perdir /WebServer/Documents/] RewriteCond: input='/WebServer/Documents/main1//WebServer/Documents/index.html' pattern='-f' => not-matched
::1 - - [26/Nov/2011:10:52:54 +0000] [localhost/sid#10090f128][rid#10099c8a8/subreq] (1) [perdir /WebServer/Documents/] pass through /WebServer/Documents/index.html

2.)http://localhost:80/566432/one.jpg

::1 - - [26/Nov/2011:10:59:28 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (3) [perdir /WebServer/Documents/] add path info postfix: /WebServer/Documents/566432 -> /WebServer/Documents/566432/one.jpg
::1 - - [26/Nov/2011:10:59:28 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (3) [perdir /WebServer/Documents/] strip per-dir prefix: /WebServer/Documents/566432/one.jpg -> 566432/one.jpg
::1 - - [26/Nov/2011:10:59:28 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (3) [perdir /WebServer/Documents/] applying pattern '(.*)' to uri '566432/one.jpg'
::1 - - [26/Nov/2011:10:59:28 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (4) [perdir /WebServer/Documents/] RewriteCond: input='/WebServer/Documents//WebServer/Documents/566432' pattern='-f' => not-matched
::1 - - [26/Nov/2011:10:59:28 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (3) [perdir /WebServer/Documents/] add path info postfix: /WebServer/Documents/566432 -> /WebServer/Documents/566432/one.jpg
::1 - - [26/Nov/2011:10:59:28 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (3) [perdir /WebServer/Documents/] strip per-dir prefix: /WebServer/Documents/566432/one.jpg -> 566432/one.jpg
::1 - - [26/Nov/2011:10:59:28 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (3) [perdir /WebServer/Documents/] applying pattern '(.*)' to uri '566432/one.jpg'
::1 - - [26/Nov/2011:10:59:28 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (4) [perdir /WebServer/Documents/] RewriteCond: input='/WebServer/Documents/main1//WebServer/Documents/566432' pattern='-f' => not-matched
::1 - - [26/Nov/2011:10:59:28 +0000] [localhost/sid#10090f128][rid#1009918a8/initial] (1) [perdir /WebServer/Documents/] pass through /WebServer/Documents/566432

Respuesta1

¡¡Casi lo logras!!

¡¡Olvidaste el "%"!!

Y ^(.*)$solo es lo mismo, (.*)así que esto es lo que debería funcionar:

RewriteEngine On
RewriteCond  %{DOCUMENT_ROOT}/%{REQUEST_FILENAME}  -f
RewriteRule  (.*) %{DOCUMENT_ROOT}/$1  [L]  
RewriteCond  %{DOCUMENT_ROOT}/main2/%{REQUEST_FILENAME}  -f
RewriteRule  (.*) %{DOCUMENT_ROOT}/main2/$1  [L]

Dime si funciona ;)

información relacionada