2013-03-30 48 views
1

首先,請原諒我,因爲我對nginx完全陌生。nginx重寫爲php文件 - 正在下載文件

單個站點,在根目錄下運行Wordpress以及在子目錄中運行各種其他應用程序。據我所知,Wordpress permalinks/rewrites工作正常。

問題:當直接瀏覽它們時,所有php文件都能正常工作。但是,當訪問/ apply /時,文件將在瀏覽器中以純文本形式下載和/或顯示。如果我直接瀏覽到/forums/apply.php,它可以正常工作。這個網站

nginx的配置:

server_name site; 
root /var/www/site; 
index index.php index.html index.htm; 

location /apply { 
    rewrite ^/apply/ /forums/apply.php break; 
} 

location/{ 
    if (!-e $request_filename) { 
    rewrite ^(.*)$ /index.php last; 
    break; 
    } 
} 


location ~ \.php { 
    # for security reasons the next line is highly encouraged 
    try_files $uri /index.php =404; 

    fastcgi_param QUERY_STRING  $query_string; 
    fastcgi_param REQUEST_METHOD  $request_method; 
    fastcgi_param CONTENT_TYPE  $content_type; 
    fastcgi_param CONTENT_LENGTH  $content_length; 

    fastcgi_param SCRIPT_NAME  $fastcgi_script_name; 

    # if the next line in yours still contains $document_root 
    # consider switching to $request_filename provides 
    # better support for directives such as alias 
    fastcgi_param SCRIPT_FILENAME $request_filename; 

    fastcgi_param REQUEST_URI  $request_uri; 
    fastcgi_param DOCUMENT_URI  $document_uri; 
    fastcgi_param DOCUMENT_ROOT  $document_root; 
    fastcgi_param SERVER_PROTOCOL $server_protocol; 

    fastcgi_param GATEWAY_INTERFACE CGI/1.1; 
    fastcgi_param SERVER_SOFTWARE nginx; 

    fastcgi_param REMOTE_ADDR  $remote_addr; 
    fastcgi_param REMOTE_PORT  $remote_port; 
    fastcgi_param SERVER_ADDR  $server_addr; 
    fastcgi_param SERVER_PORT  $server_port; 
    fastcgi_param SERVER_NAME  $server_name; 

    # If using a unix socket... 
    # fastcgi_pass unix:/tmp/php5-fpm.sock; 

    # If using a TCP connection... 
    fastcgi_pass 127.0.0.1:9000; 
} 

的任何和所有的建議都非常讚賞。

回答

2

rewrite ^/apply/ /forums/apply.php break; 

rewrite ^/apply/ /forums/apply.php last; 
+0

我有同樣的問題,並改變指令'last'沒有解決它變化。 –

+0

您的重寫指令是在一個位置塊內還是在一個服務器塊內? 'break'和'last'在服務器模塊中意味着相同的東西。它們只有在位置塊內纔有所不同。 –