加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Nginx:重写子文件夹的规则

发布时间:2020-12-13 13:56:22 所属栏目:PHP教程 来源:网络整理
导读:我有一个子域,我想保留我正在处理的项目,以便向客户展示这些项目. 这是/ etc / nginx / sites-available / projects中的配置文件: server { listen 80; server_name projects.example.com; access_log /var/log/nginx/projects.example.com.access.log; err
我有一个子域,我想保留我正在处理的项目,以便向客户展示这些项目.

这是/ 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等),所以为了使preety 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.

你不能在重写的第二部分中逃避句点(.):
rewrite ^/example3.com/(.*)$/example3.com/index.php?id=$1 last;

应该

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

但是你的id是什么样的?如果它是一个数字,你可以试试这个:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读