2015-06-04 55 views
0

Nginx的1.6.2 Debian的傑西的Nginx/FCGI:與僞別名位置的index.php問題

我要地圖所有example.com/forum/請求/路徑/到/ htdocs/phpbb並切斷了URI中的/forum/部分。有人在Stackoverflow推薦「重寫」解決方案,而不是「別名」,因爲有一些錯誤。

server 
{ 
    listen [::]:80; 
    server_name example.com; 
    root /var/www/html; 

    index index.php index.html; 
    #try_files $uri $uri/ =404; 

    location /forum/ 
    { 
     root /path/to/htdocs/phpbb; 
     rewrite ^/forum/(.*)$ /$1 break; 

     location ~ .+\.php$ 
     { 
      rewrite ^/forum/(.*)$ /$1 break; 
      include snippets/fastcgi-php.conf; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
     } 
    } 
} 

的示例配置工作正常 - example.com/forum/viewtopic.php執行腳本/path/to/htdocs/phpbb/viewtopic.php - 但example.com/的index.php)不工作:

「/var/www/html/index.php」 失敗(2:沒有這樣的文件或目錄)

從服務器塊除去「索引」線之後:的

目錄索引 「/路徑/到/ htdocs中/ PHPBB /」 被禁止

移動「索引」 後和/或「try_files」線(S)到所述位置塊:

的index.php服務而不越過噸o php-fpm ...

好的,我的配置有什麼問題?任何提示?

回答

0

好吧,別名是越野車(改寫太...),但如果你避免try_files如果代替(即使邪惡...)它應該工作使用!

server 
{ 
    listen [::]:80; 
    server_name example.com; 
    root /var/www/html; 

    location /forum/ 
    { 
     alias /path/to/htdocs/phpbb/; 
     index index.php index.html; 

     location ~ "^(/forum/)(.+\.php)(/.+){0,1}$" 
     { 
      if (!-f $document_root$2) 
      { 
       return 404; 
      } 

      fastcgi_index index.php; 
      include fastcgi.conf; 

      fastcgi_param SCRIPT_FILENAME $document_root$2; 
      fastcgi_param SCRIPT_NAME  $1$2; 
      fastcgi_param PATH_INFO   $3; 

      fastcgi_pass unix:/var/run/php5-fpm.sock; 
     } 
    } 
} 

的phpinfo()看起來不錯,但還有一個問題:是否安全?