2017-01-31 2 views
1

Я делая хранение изображений для screencloud изображения, делая так, я хотел бы иметь тезисы URLs работает: Всего URL, который заканчивается с расширением файла перенаправляет в обычном режиме:Переписать правила для обмена

http://serv/ ->/index.php
http://serv/index.php -> /index.php

Все адреса, которые не имеют расширение или PNG, как возвращается файл:

HTTP: // серв/scr1801172229 -> /scr/scr1801172229.png
http: // serv/scr1801172229.png -> /scr/scr1801172229.png

Я попытался научиться использовать переписывание из nginx, хотя я не могу найти хороший учебник. И все, что я пытался не работал, в том числе и это, которое ближе всего я получил:

rewrite /index /index.php break; 
rewrite /(.*)$ /scr/$1.png break; 
rewrite /(.*)$.png /scr/$1.png break; 

Последняя строка делает ничего (он идет 404) Первая линия работает, чтобы отображаться индекс хотя ресурсы не являются загружен, ничего, кроме индекса, не будет работать, и я не могу получить свой .php в url, как обычно. Средняя линия на самом деле работает правильно

ответ

0

Я не понимаю всех ваших требований, но кажется, что некоторые из ваших URI сопоставляются с файлами в корне документа, а некоторые - с файлами в подкаталоге scr.

Вместо использования rewrite ... break вы можете протестировать различные местоположения и расширения файлов, используя директиву try_files. Например:

root /path/to/root; 

location/{ 
    try_files $uri /scr$uri /src$uri.png /index.php; 
} 
location ~ \.php$ { 
    ... 
} 

См. this document для получения дополнительной информации.

+0

Ничего себе я бы никогда не подумал об этом, и он действительно работает как шарм, именно то, что мне нужно! благодаря – Knux14

Смежные вопросы