Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Apache重写转换为Nginx_Apache_.htaccess_Nginx - Fatal编程技术网

将Apache重写转换为Nginx

将Apache重写转换为Nginx,apache,.htaccess,nginx,Apache,.htaccess,Nginx,我有这个访问代码: RewriteEngine On ​ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l ​ RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 我想转换为nginx重写规则,我尝试了 if (!-e $request_filename){ rewrite ^(.+)

我有这个访问代码:

RewriteEngine On
​
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
​
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
我想转换为nginx重写规则,我尝试了

if (!-e $request_filename){
     rewrite ^(.+)$ /index.php?url=$1 break;
}

但是它不起作用,你知道吗?

等效的重写是:

if (!-e $request_filename){
    rewrite ^/?(.*)$ /index.php?url=$1 last;
}
由于
nginx
uri包含脚本可能不需要的前导
/
。另外,
.php
文件可能在不同的位置块中处理,因此需要使用
last

在不使用以下选项的情况下编写此文件的其他方法:

首先,使用前面的
/

location / {
    try_files $uri $uri/ /index.php?url=$uri;
}
location / {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^/?(.*)$ /index.php?url=$1 last;
}
第二,没有前导的
/

location / {
    try_files $uri $uri/ /index.php?url=$uri;
}
location / {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^/?(.*)$ /index.php?url=$1 last;
}

所有的
nginx
指令都是。

等效的重写是:

if (!-e $request_filename){
    rewrite ^/?(.*)$ /index.php?url=$1 last;
}
由于
nginx
uri包含脚本可能不需要的前导
/
。另外,
.php
文件可能在不同的位置块中处理,因此需要使用
last

在不使用以下选项的情况下编写此文件的其他方法:

首先,使用前面的
/

location / {
    try_files $uri $uri/ /index.php?url=$uri;
}
location / {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^/?(.*)$ /index.php?url=$1 last;
}
第二,没有前导的
/

location / {
    try_files $uri $uri/ /index.php?url=$uri;
}
location / {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^/?(.*)$ /index.php?url=$1 last;
}

所有
nginx
指令都是。

将.htaccess转换为nginx。我刚刚从Apache2.4切换到Nginx1.18.0,它可以工作,但所有重写行都应该在Nginx conf中的服务器块内,否则它会将其全部转换


将.htaccess转换为nginx。我刚刚从Apache2.4切换到Nginx1.18.0,它可以工作,但所有重写行都应该在Nginx conf中的服务器块内,否则它会将其全部转换