2016-09-17 78 views
0

我想将下面的HTACCESS文件转换成NGINX。我在使用Plesk GUI内置转换器的Plesk服务器上运行,它似乎不工作(由于SetEnvIf变量而不断生成错误)。HTACCESS到NGINX Conversoin

我试过的转换器都保留了在NGINX中不起作用的SetEnvIf变量。但是,我相信NGINX使用了一个“env”等价物,当我将它输入Plesk GUI中的NGINX Settings(它反过来写入我们主服务器配置中的nginx.conf文件)时,我得到另一个错误信息,指出我们不能在这个位置使用“env”变量。

这是我们需要转换的.htaccess文件:

<IfModule mod_setenvif.c> 
    SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0 
</IfModule> 
<IfModule mod_rewrite.c> 
    Options -MultiViews 
    RewriteEngine On 
    RewriteBase /discuss/api/ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule .* index.php [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] 
</IfModule> 

这就是转换器,和其他人,创造:

if (!-f $request_filename){ 
    set $rule_0 1$rule_0; 
} 
if (!-d $request_filename){ 
    set $rule_0 2$rule_0; 
} 
if ($rule_0 = "21"){ 
    setenv HTTP_AUTHORIZATION:$http_authorization; 
    rewrite /.* /index.php last; 
} 

什么是我们做错了(和转换器)? !提前致谢。

回答

0

envcontextmain,因此它不能在虚拟服务器中使用:

env FOO=BAR; // main context 
http { 
    server { 
     // we a here 
    } 
} 

但是你可以从PHP代码index.php访问HTTP_AUTHORIZATION并设置环境变量:

<?php 
    putenv('HTTP_AUTHORIZATION=' . $_SERVER['HTTP_AUTHORIZATION']); 
+0

我明白你在说什么,但这在我们的情况下不起作用。我们需要将上述HTACCESS转换为NGINX等价物,以便通过Plesk NGINX GUI将其输入到NGINX配置文件中。它支持IP Board API调用。 –