首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nginx重写到index.php?q=$uri

nginx重写到index.php?q=$uri
EN

Stack Overflow用户
提问于 2018-03-18 14:52:31
回答 1查看 629关注 0票数 2

我必须更新nginx主机,以便将对别名的所有请求重写到/alias_path/index.php?q=$uri。但现在所有的资产都不再可用了。

这是我目前的配置。我越来越接近了,但是当我取消对最后一个位置的评论时,这些资产就不再可用了。

代码语言:javascript
复制
    location /csv-import {
            alias /var/www/csv-import/public;

            location ~ \.php$ {
                    include snippets/fastcgi-php.conf;
                    fastcgi_param  SCRIPT_FILENAME        $request_filename;
                    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            }

            try_files $uri $uri/ =404;

            #location ~ ^/csv-import/(.*)$ {
                    #alias /var/www/csv-import/public;
                    #try_files $uri $uri/ /csv-import/index.php?q=$1;
            #}

            error_log /var/log/nginx/csv-import.error.log;
            access_log /var/log/nginx/csv-import.access.log;
    }

我不想接触的文件是/var/www/csv-import/public/index.php。像example.com/csv-import/some/url这样的所有Urls都应该重写到example.com/csv-import/index.php?q=some/url中,但是像example.com/csv-import/css/app.css这样的资产应该可以在/var/www/csv-import/public/css/app.css下使用。

我认为,有一个解决方案是完美的,但我想不出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-18 15:14:14

您不需要另一个location块。通常的方法是更改try_files语句的默认操作。但是由于本期if块可能更简单:

代码语言:javascript
复制
location ^~ /csv-import {
    alias /var/www/csv-import/public;

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

    location ~ \.php$ {
        ...
    }

    error_log /var/log/nginx/csv-import.error.log;
    access_log /var/log/nginx/csv-import.access.log;
}

if块替换try_files语句。^~运算符避免了与其他location块的任何歧义。关于if的使用,请参阅if

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49349276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档