расположение / {

расположение / {

Я пытаюсь очистить правила перезаписи nginx для моего форума vBulletin, который имеет некоторые изменения и дополнительное программное обеспечение на том же сайте, что вызывает проблемы. У меня все работает как надо, но согласноnginx Если это злоЯ обеспокоен и хотел бы попробовать преобразовать эти несколько правил в try_files.

В настоящее время существует

  1. Правило для статических изображений и файлов, чтобы они не передавались в seo-модуль (например, .gif, .ico, даже .css)

  2. Правило для подпапки mobiquo, которая также известна как: плагин tapatalk. Чтобы это работало, мне пришлось исключить весь каталог из перезаписей.

  3. Если файл не существует. Я не уверен, насколько это важно, но это кажется хорошей идеей. Возможно, это для того, чтобы снизить работу seo-мода.

Правила перезаписи nginx в явно рискованной форме блока If:

это выше блока /forum/, потому что я хотел дать ему приоритет. Если это сделано неправильно, я бы хотел знать.

    location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
            # Some basic cache-control for static files to be sent to the browser
            expires max;
            add_header Pragma public;
            add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    }

    location /forum/ {

            try_files $uri $uri/ /forum/dbseo.php?$args;

            if ($request_uri ~* ^/forum/mobiquo) {
                    break;
            }

            if (-f $request_filename) {
            expires 30d;
                    break;
            }

            if ($request_filename ~ "\.php$" ) {
                    rewrite ^(/forum/.*)$ /forum/dbseo.php last;
            }


            if (!-e $request_filename) {
                    rewrite ^/forum/(.*)$ /forum/dbseo.php last;
            }

    }

КОНЕЦ

Где-то в своих поисках я нашел шаблон, который попытался адаптировать, но так как я не разбираюсь в регулярных выражениях, у меня ничего не получилось :)

расположение / {

            # if you're just using wordpress and don't want extra rewrites
            # then replace the word @rewrites with /index.php

try_files $uri $uri/ /index.php;

}

местоположение @rewrites {

            # Can put some of your own rewrite rules in here
            # for example rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
            # If nothing matches we'll just send it to /index.php

try_files $uri $uri/ /forum/dbseo.php?$args;

переписать ^ /index.php последний;

переписать ^(/.php)$ /forum/dbseo.php последний;

}

решение1

Постарайтесь прояснить свой вопрос, особенно ту его часть, где вы кричите вместо того, чтобы предоставить код.

На основе конфигурации, которую вы предоставили в начале своего вопроса, я пришел к следующему:

location /forum/ {
    index dbseo.php; # You obviously wish to send everything erroneous/inexistent to dbseo.php, any index.php file would suffer the regex location below
    try_files $uri $uri/ /forum/dbseo.php?$args; # Any inexistent file/directory will be handled over to /forum/dbseo.php

    location ^~ /forum/dbseo.php { # Avoids matching the regex location below (performance)
    }

    location ^~ /forum/mobiquo { # Avoids matching any other rules
    }

    location ~* \.php$ {
        try_files /forum/dbseo.php =404;
        # Be careful here, try to secure your location since the regex can still be manipulated for arbitrary code execution
    }
}

Вложенные местоположения хороши для изоляции потенциально конфликтующих блоков местоположений. Помните, что местоположения регулярных выражений оцениваются последовательно, поэтому, чтобы избежать влияния порядка блоков местоположений (что является беспорядком, как и конфигурация Apache), старайтесь всегда заключать местоположения регулярных выражений в префиксные, чтобы избежать нескольких из них, следующих друг за другом.

Вы можете узнать оlocationмодификаторы на странице документации.

Может быть, есть еще тонкости, но вся основная информация, которая вам нужна, есть в моем примере. Ваша задача понять/улучшить его, чтобы он лучше соответствовал вашим потребностям. :o)

Связанный контент