2009-01-13 8 views
0

Je dois faire une réécriture avec nginx de /blah/.../3275 à/id/3275 si le second fichier existe, sinon je veux le remettre à apache. Voici mon (faible) tentativenginx rewrite question

(...) représente des choses hors de propos

if ($request_filename ~^/.../([0-9]+)/$) { 
       if (-d /id/$1) { 
         rewrite ^/.../[0-9]+/([0-9]+)/$ /id/$1; 
       } 
     } 

Est-ce que quelqu'un a des idées

Répondre

1

Le mieux est de le faire avec réécritures internes:

set $original_uri $uri; 

location /blah/irrelevant_stuff { 
    error_page 404 = @apache; 
    rewrite ^/blah/irrelevant_stuff/([0-9]+)$ /id/$1; 
} 

location @apache { 
    proxy_pass http://upstream$original_uri; 
} 
+0

Très agréable. Je n'avais pas réalisé que vous pouviez sauver l'uri original comme ça. Je vais l'essayer –

0

La réponse ci-dessus de wulong je ne pouvais pas arriver à travailler pour une raison quelconque, mais je l'ai fait fonctionner en utilisant

if (!-e $request_filename) { 
    proxy_pass http://apache$original_uri; 
    break; 
    } 

plutôt que la directive error_page. Même idée en gros