将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中的服务器块内,否则它会将其全部转换