2016-09-17 34 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調用。 –