Скачивается файл по ссылки (Nginx)

xsacha

Только чтение
Сообщения
1,262
Реакции
1,383
Баллы
5,850
Подскажите есть фрагмент конфинга nginx+isp, но при одном правиле переход работает нормально, а при аналогичном другом скачивается файл как можно корректно прописать, чтобы отрабатывал переход ?
Код:
location / {
               location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
    }
#Не работает ссылка
location /directory {
    rewrite ^/directory/?$ /directory.php last;
    rewrite ^/directory/([^/]+)/?$ /directory.php?view=$1 last;
    rewrite ^/directory/([^/]+)/([^/]+)/?$ /directory.php?view=$1&page=$2 last;
}
#Работают ссылки
location /products {
        rewrite ^/products/?$ /index.php?view=products last;
}
 location /groups {
        rewrite ^/groups/?$ /index.php?view=groups last;
        rewrite ^/groups/([^/]+)/?$ /group.php?username=$1 last;
        rewrite ^/groups/([^/]+)/([^/]+)/?$ /group.php?username=$1&view=$2 last;
        rewrite ^/groups/([^/]+)/([^/]+)/([^/]+)/?$ /group.php?username=$1&view=$2&id=$3 last;
    }

У апача файл выглядит так:
Код:
RewriteEngine on
RewriteOptions MaxRedirects=1
RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule .* - [L]

# Directory
RewriteRule ^directory/?$ directory.php [L]
RewriteRule ^directory/([^/]+)/?$ directory.php?view=$1 [L]
RewriteRule ^directory/([^/]+)/([^/]+)/?$ directory.php?view=$1&page=$2 [L]

# Pages & Groups
RewriteRule ^create/page/?$ index.php?view=create_page [L]
RewriteRule ^create/group/?$ index.php?view=create_group [L]
RewriteRule ^pages/?$ index.php?view=pages [L]
RewriteRule ^pages/([^/]+)/?$ page.php?username=$1 [L]
RewriteRule ^pages/([^/]+)/([^/]+)/?$ page.php?username=$1&view=$2 [L]
RewriteRule ^pages/([^/]+)/([^/]+)/([^/]+)/?$ page.php?username=$1&view=$2&id=$3 [L]
RewriteRule ^groups/?$ index.php?view=groups [L]
RewriteRule ^groups/([^/]+)/?$ group.php?username=$1 [L]
RewriteRule ^groups/([^/]+)/([^/]+)/?$ group.php?username=$1&view=$2 [L]
RewriteRule ^groups/([^/]+)/([^/]+)/([^/]+)/?$ group.php?username=$1&view=$2&id=$3 [L]

# Market
RewriteRule ^products/?$ index.php?view=products [L]

Решил вопрос, кому интересно корректно
 
Последнее редактирование:
корректно
Не корректно, так как вариант с группировкой в отдельные локейшены правильней и проще. А проблема всего то в замене last на break
last
завершает обработку текущего набора директив модуля ngx_http_rewrite_module, после чего ищется новый location, соответствующий изменённому URI;
break
завершает обработку текущего набора директив модуля ngx_http_rewrite_module аналогично директиве ;
Даже чуть ниже
Код:
Если же эти директивы поместить в location “/download/”, то нужно заменить флаг last на break, иначе nginx сделает 10 циклов и вернёт ошибку 500:
А если пойти чуть дальше, то можно
Код:
location /directory {
    rewrite ^/directory/?$ /directory.php redirect;
    rewrite ^/directory/([^/]+)/?$ /directory.php?view=$1 redirect;
    rewrite ^/directory/([^/]+)/([^/]+)/?$ /directory.php?view=$1&page=$2 redirect;
}
Как то так.
 
xsacha, потому что у ISP такие особые конфиги. Надо добавить:
Код:
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
Во все остальные локейшены. Например:
Код:
location /groups {
        rewrite ^/groups/?$ /index.php?view=groups last;
        rewrite ^/groups/([^/]+)/?$ /group.php?username=$1 last;
        rewrite ^/groups/([^/]+)/([^/]+)/?$ /group.php?username=$1&view=$2 last;
        rewrite ^/groups/([^/]+)/([^/]+)/([^/]+)/?$ /group.php?username=$1&view=$2&id=$3 last;
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
    }
 
Спасибо большое Exile попробую так.
Незнаю на сколько это верно, но у меня работает вот такой конфиг вроде нормально, если ошибаюсь поправь пожалуйста.
Код:
location / {
        rewrite ^/install/?$ /install.php last;
        rewrite ^/static/([^/]+)/?$ /static.php?url=$1 last;
        rewrite ^/contacts/?$ /contact.php last;
        rewrite ^/signin/?$ /sign.php?do=in last;
        rewrite ^/signup/?$ /sign.php?do=up last;
        rewrite ^/signout/?$ /sign.php?do=out last;
        rewrite ^/reset/?$ /sign.php?do=reset last;
        rewrite ^/activation/([^/]+)/([^/]+)/?$ /activation.php?id=$1&token=$2 last;
        rewrite ^/connect/([^/]+)/?$ /connect.php?provider=$1 last;
        rewrite ^/revoke/([^/]+)/?$ /revoke.php?provider=$1 last;
        rewrite ^/packages/?$ /packages.php last;
        rewrite ^/started/?$ /started.php last;
        rewrite ^/started/finished?$ /started.php?finished=true last;
        rewrite ^/search/?$ /search.php last;
        rewrite ^/search/hashtag/([^/]+)/?$ /search.php?query=$1&hashtag=1 last;
        rewrite ^/search/([^/]+)/?$ /search.php?query=$1&hashtag=0 last;
        rewrite ^/friends/requests/?$ /friend_requests.php last;
        rewrite ^/friends/requests/([^/]+)/?$ /friend_requests.php?view=$1 last;
        rewrite ^/messages/?$ /messages.php last;
        rewrite ^/messages/new?$ /messages.php?view=new last;
        rewrite ^/messages/([^/]+)/?$ /messages.php?cid=$1 last;
        rewrite ^/notifications/?$ /notifications.php last;
        rewrite ^/settings/?$ /settings.php last;
        rewrite ^/settings/([^/]+)/?$ /settings.php?view=$1 last;
        rewrite ^/posts/([^/]+)/?$ /post.php?post_id=$1 last;
        rewrite ^/photos/([^/]+)/?$ /photo.php?photo_id=$1 last;
        rewrite ^/create/page/?$ /index.php?view=create_page last;
        rewrite ^/create/group/?$ /index.php?view=create_group last;
        rewrite ^/pages/?$ /index.php?view=pages last;
        rewrite ^/pages/([^/]+)/?$ /page.php?username=$1 last;
        rewrite ^/pages/([^/]+)/([^/]+)/?$ /page.php?username=$1&view=$2 last;
        rewrite ^/pages/([^/]+)/([^/]+)/([^/]+)/?$ /page.php?username=$1&view=$2&id=$3 last;
        rewrite ^/groups/?$ /index.php?view=groups last;
        rewrite ^/groups/([^/]+)/?$ /group.php?username=$1 last;
        rewrite ^/groups/([^/]+)/([^/]+)/?$ /group.php?username=$1&view=$2 last;
        rewrite ^/groups/([^/]+)/([^/]+)/([^/]+)/?$ /group.php?username=$1&view=$2&id=$3 last;
        rewrite ^/games/?$ /index.php?view=games last;
        rewrite ^/games/([^/]+)/?$ /game.php?id=$1 last;
        rewrite ^/saved/?$ /index.php?view=saved last;
        rewrite ^/directory/?$ /directory.php last;
        rewrite ^/directory/([^/]+)/?$ /directory.php?view=$1 last;
        rewrite ^/directory/([^/]+)/([^/]+)/?$ /directory.php?view=$1&page=$2 last;
        rewrite ^/products/?$ /index.php?view=products last;
        rewrite ^/market/?$ /market.php last;
        rewrite ^/market/search/?$ /market.php?view=search last;
        rewrite ^/market/search/([^/]+)/?$ /market.php?view=search&query=$1 last;
        rewrite ^/market/search/([^/]+)/([^/]+)/?$ /market.php?view=search&query=$1&page=$2 last;
        rewrite ^/market/category/([^/]+)/?$ /market.php?view=category&category_id=$1 last;
        rewrite ^/market/category/([^/]+)/([^/]+)/?$ /market.php?view=category&category_id=$1&category_url=$2 last;
        rewrite ^/market/category/([^/]+)/([^/]+)/([^/]+)/?$ /market.php?view=category&category_id=$1&category_url=$2&page=$3 last;
        rewrite ^/market/([^/]+)/?$ /market.php?page=$1 last;
        rewrite ^/admincp/?$ /admin.php last;
        rewrite ^/admincp/([^/]+)/?$ /admin.php?view=$1 last;
        rewrite ^/admincp/([^/]+)/([^/]+)/?$ /admin.php?view=$1&sub_view=$2 last;
        rewrite ^/admincp/([^/]+)/([^/]+)/([^/]+)/?$ /admin.php?view=$1&sub_view=$2&id=$3 last;
        rewrite ^/([^/]+)/?$ /profile.php?username=$1 last;
        rewrite ^/([^/]+)/([^/]+)/?$ /profile.php?username=$1&view=$2 last;
        rewrite ^/([^/]+)/([^/]+)/([^/]+)/?$ /profile.php?username=$1&view=$2&id=$3 last;
        if (-f $request_filename){
            set $rule_0 1;
        }
        if (-d $request_filename){
            set $rule_0 1;
        }
        if ($rule_0 = "1"){
            break;
        }
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
    }
 
Последнее редактирование:
Надо добавить:
Не надо добавлять.
Вот кусок боевого конфига
2017.05.25_11h05m07s_003_.png
И самым последним отлавливаем php
2017.05.25_11h07m17s_004_.png

А вот пример использования last (vbseo sitemap для булки)
2017.05.25_11h17m55s_005_.png
Все так же, реврайты стоят в начале, правило меняет урл, дальше идет обработка по конфигу ниже. Все работает.
 
Smalesh, я привел пример стандартного конфига ISP Manager 5, собственно по куску xsacha это видно. Надо добавлять, не надо - это все холивар. Определенно не надо перезаписывать стандартные паттерны панели на свои "более правильные" ~ \.php$, потому что потом панель от таких правок ему при малейшем редактировании домена в "себе" сломает конфиг задвоив его и поставит nginx раком.
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу