Вопрос: Nginx: правило перезаписи для подпапки


У меня есть субдомен, где я хочу продолжать проекты, над которыми я работаю, чтобы показать эти проекты клиентам.

Вот файл конфигурации из / etc / nginx / sites-available / projects:

server {
    listen   80;
    server_name projects.example.com;
    access_log /var/log/nginx/projects.example.com.access.log;
    error_log /var/log/nginx/projects.example.com.error.log;

    location / {
        root   /var/www/projects;
        index  index.html index.htm index.php;
    }

    location /example2.com {
        root   /var/www/projects;
        auth_basic           "Stealth mode";
        auth_basic_user_file /var/www/projects/example2.com/htpasswd;
    }

    location /example3.com/ {
        index  index.php;

        if (-f $request_filename) {
            break;
        }
        if (!-f $request_filename) {
            rewrite ^/example3\.com/(.*)$ /example3\.com/index.php?id=$1 last;
            break;
        }
    }

    location ~ \.php {
        root /var/www/mprojects;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }
}

Я хочу, чтобы в подпапках можно было разместить разные php-движки (wordpress, getsimple и т. Д.). Эти двигатели имеют разные параметры querry (id, q, url и т. Д.), Поэтому для того, чтобы сделать работу с URL-адресами, мне нужно сделать переписывание. Однако выше не работает. Это ответ, который я получаю:

Warning: Unknown: Filename cannot be empty in Unknown on line 0
Fatal error: Unknown: Failed opening required '' (include_path='.:/usr/local/lib/php') in Unknown on line 0

Если я выберу "location /example3.com/", тогда все работает, но без URL-адресов предварительной настройки. Пожалуйста помоги.

Конфигурация основана на этом сообщении: https://stackoverflow.com/questions/2119736/cakephp-in-a-subdirectory-using-nginx-rewrite-rules

Я использую Ubuntu 9.10 и nginx / 0.7.62 с php-fpm.


5
2018-04-10 13:13


Источник


все еще не нашел способ исправить это :( - Misha Reyzlin


Ответы:


Вы не должны избегать периода (.) Во второй части перезаписи:

rewrite ^/example3\.com/(.*)$ /example3\.com/index.php?id=$1 last;

должно быть

rewrite ^/example3\.com/(.*)$ /example3.com/index.php?id=$1 last;

Но что Я бы выглядит как? Если это номер, вы можете попробовать:

location /example3.com/ {
    index  index.php;
    rewrite "^/example3\.com/([0-9]+)$" /example3.com/index.php?id=$1 break;
}

10
2018-05-05 19:04