2017-09-02 94 views
0

我有以下配置效果很好:Nginx的多根重定向問題

root /var/www/en; 
location/{ 
    try_files $uri $uri/ /index.php?$args; 
} 

location /admin { 
    try_files $uri $uri/ /admin/index.php; 
} 

location ~ \.php(/|\?|$) { 
     include fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME 
     $document_root$fastcgi_script_name; 
     fastcgi_param COCKPIT_URL_REWRITE On; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
     fastcgi_index index.php; 
} 

這重定向到的index.php和管理/ index.php文件的管理後臺的所有請求。 現在我需要將網站的副本以不同的語言添加到子目錄具有相同的子目錄重定向規則的子目錄中。這實際上是一個單獨的項目和一個單獨的根文件夾。我做了以下的方法:

location ~ ^/de { 
    root /var/www/de; 
    try_files $uri $uri/ /de/index.php?$args; 
} 


location ~ ^/de/admin { 
    root /var/www/de; 
    try_files $uri $uri/ /de/admin/index.phpd; 
} 

然而,這導致以下nginx的錯誤:

rewrite or internal redirection cycle while internally redirecting to "/de/index.php" 

這到底是怎麼固定?

感謝;)

UPDATE:

我設法讓靜態文件改變rootalias工作。所以,現在我可以訪問靜態文件site.com/de/test.txt。但是,當我嘗試訪問site.com/de/ php處理程序不起作用並且瀏覽器嘗試下載php文件時。我把PHP處理程序放在新的位置塊中,但它仍然不起作用。

回答

0

試試這個

location ~ \.php(/|\?|$) { 

    location /de { 
    root /var/www/de; 
    try_files $uri $uri/ /de/index.php?$args; 
    } 

    location /de/admin { 
    root /var/www/de; 
    try_files $uri $uri/ /de/admin/index.php; 
    } 

    include fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME 
    $document_root$fastcgi_script_name; 
    fastcgi_param COCKPIT_URL_REWRITE On; 
    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
    fastcgi_index index.php; 
} 
+0

不幸的是,這是行不通的。 Nginx無法啓動。此外,你在php的位置添加這個。所以,靜態文件將無法工作。 – Ssey

+0

讓我檢查並稍後更新 –

+0

我想這是與位置匹配順序有關的事情。我閱讀了文檔,嘗試了一些變體,但沒有找到解決方案。如果您進一步查看問題,我將不勝感激。提前致謝。 – Ssey