Como obter o apache para procurar arquivos em diferentes pastas de subpastas?

2

Eu definitivamente sou novo no material de reescrever o mod.

Nota: - aqui o URL é comum e todas as pastas e subpastas no mesmo host.

O URL que um usuário usa para acessar sua página é http://myurl.com/1234/filename.jpg

Aqui, o nome da subpasta é um número inteiro único e gerado dinamicamente por outro aplicativo.

A subpasta armazena imagens específicas de um usuário individual.

Portanto, a estrutura da pasta é a seguinte

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

Então, eu quero escrever uma regra de reescrita para que, se um usuário tentar digitar

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

a regra de regravação precisará procurar onde o arquivo está e atender à solicitação; então, para o pedido http: /myurl.com/1234/filename.jpg, a página atual está localizada em /main1/1234/filename.jpg e, em seguida, precisa exibir essa página a partir dessa pasta.

Assim, se outro usuário fizer uma solicitação como link , ele deverá veicular a página a partir do seguinte destino / main1 / main2 / 9966 / filename.jpg

Por favor, deixe-me saber se a pergunta ainda não está clara.

Isto é o que eu fiz até agora e não funciona de todo.

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

qualquer ajuda é realmente grata

EDIT @ShaneMadden por favor encontre os detalhes A configuração está localizada no arquivo .htaccess; por favor encontre os detalhes do .htaccess

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

EDITAR:

Olivier, obrigado por me ajudar. por favor, encontrar os detalhes abaixo ..

link

DocumentRoot  "/WebServer/Documents"

Listagem de diretórios

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

arquivos .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 acesso - > link

::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.) link

::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
    
por prb 23.11.2011 / 17:33

1 resposta

1

Você quase fez isso !!

Você esqueceu o "%" !!

E ^(.*)$ sozinho é o mesmo que (.*) , eis o que deve 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]

Diga-me se funciona;)

    
por 23.11.2011 / 21:49