首页 文章

位置子目录nginx与重写drupal

提问于
浏览
0

我有这个配置的nginx:

server {
    listen       80;
    server_name  example.com www.example.com;

    location = / {
            root /var/www/example.com;
            index index.php;
    }

    location / {
            root   /var/www/example.com/Drupal;
            index  index.php index.html;

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

            if (!-d $request_filename) {
                    rewrite  ^(.*)$  /index.php?q=$1  last;
                    break;
            }
    }

    location ~ \.php$ {

            set $php_root /var/www/example.com/Drupal;

            if ($request_uri ~ ^/MassMail) {
                    set $php_root /var/www/example.com/MassMail;
            }

            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include /etc/nginx/fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name;

    }

我在php中有2个应用程序:

  • /var/www/example.com/MassMail中的第一个

  • /var/www/example.com/Drupal中的第二个(Drupal博客)

我的服务器服务于两个URL

example.com/ - > drupal博客

example.com/MassMail - >其他应用

但它不提供图像或JavaScript ......(错误404)

对于服务img等我测试了很多像这样的东西(例如......):

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
           expires         30d;
            access_log      off;
    }

也许错过了一个根目录,但是哪个?

1 回答

  • 0

    你的PHP认为MassMail安装在/(root)中,尝试为staitc文件添加第二个位置:

    location ~* ^/MassMail.+.(jpg|jpeg|gif|css|png|js|ico)$ {
               expires         30d;
                access_log      off;
               root /var/www/xxx.com/MassMail;
    }
    

    Configuration #2

    location ~* ^/(.*)/.+.(jpg|jpeg|gif|css|png|js|ico)$ {
      expires         30d;
         access_log      off;
       root /var/www/xxx.com/$1;
    }
    

    Configuration #3

    将每个应用程序配置放在特殊文件中(MassMail的示例):

    应用程序/ massmail.conf:

    location ~ \.php$ {
    
                set $php_root /var/www/xxx.com/Drupal;
    
                if ($request_uri ~ ^/MassMail) {
                        set $php_root /var/www/xxx.com/MassMail;
                }
    
       location ~* ^/MassMail.+.(jpg|jpeg|gif|css|png|js|ico)$ {
               expires         30d;
                access_log      off;
               root /var/www/xxx.com/MassMail;
       }
    

    nginx.conf:

    .....
    include applications/massmail.conf;
    

相关问题