2016-11-28 67 views
0

我已經在服務器上安裝了ubuntu,php5.6,nGinx,並且在我的網站下配置了幾個項目。一個項目,我需要一個目錄下部署在笨開發,我已經配置如下nginx的配置:如何在Ubuntu,nGinx和codeigniter中啓用URL重寫?

location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ { 
       expires max; 
       log_not_found off; 
     } 

     location/{ 
       # Check if a file or directory index file exists, else route it to index.php. 
       try_files $uri $uri/ /index.php; 
     } 

     location ~* \.php$ { 
       fastcgi_pass unix:/run/php/php5.6-fpm.sock; 
       include fastcgi.conf; 
       fastcgi_split_path_info ^(.+\.php)(.*)$; 
       include fastcgi_params; 
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     } 
     # deny access to .htaccess files, if Apache's document root 
     # concurs with nginx's one 
     # 
     location ~ /\.ht { 
       deny all; 
     } 

的URL不說404現在卻是露出後,我的網站的主頁URL重寫。我怎樣才能解決這個問題?

+0

你配置了你的套接字嗎? – edlee

+0

我不確定我瞭解你的問題。 您是否正確配置了您的套接字,是否可以訪問PHP信息頁? 什麼不工作的子目錄或Codeignite網站? – edlee

回答

0

其實我已經解決了這個問題。問題是改變fastcgi_param,它工作正常。謝謝@edlee

location /6 { 
       alias /var/www/html/6/; 
       try_files $uri $uri/ /6/index.php; 
     } 



     location ~* \.php$ { 
       fastcgi_pass unix:/run/php/php5.6-fpm.sock; 
       root /var/www/html/; 
       try_files $uri =404; 
       fastcgi_index index.php; 
       fastcgi_param SCRIPT_FILENAME $request_filename; 
       include fastcgi_params; 
       fastcgi_buffer_size 128k; 
       fastcgi_buffers 256 4k; 
       fastcgi_busy_buffers_size 256k; 
       fastcgi_temp_file_write_size 256k; 
     } 
1

如果我正確理解你的問題。

一種方法是在您的Web目錄的根目錄下全局運行PHP。一旦你有它運行,你可以指定每個位置將接受什麼文件。因此,如果您需要將PHP隔離到子目錄,那麼您可以更改目錄允許的文件。

index index.html index.htm 

一個例子Nginx的配置與子目錄:

server { 
    listen 80; 
    server_name mysite.com www.mysite.com; 

    root /path/to/your/website.com/; 

    index index.html index.htm 

    error_log log/error.log; 

    # set expiration of assets to MAX for caching 
    location ~* .(ico|css|js|gif|jpe?g|png)(?[0-9]+)?$ { 
     expires max; 
     log_not_found off; 
    } 

    # main codeigniter rewrite rule or sub-directory 

    location /codeigniter { 
     alias /path/to/your/website.com/codeigniter/; 
     try_files $uri $uri/ /index.php; 
    } 

    # php parsing 
    location ~ .php$ { 
     root   /path/to/your/website.com/; 
     try_files $uri =404; 
     fastcgi_pass unix:/tmp/php5-fpm.sock; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include  fastcgi_params; 
     fastcgi_buffer_size 128k; 
     fastcgi_buffers 256 4k; 
     fastcgi_busy_buffers_size 256k; 
     fastcgi_temp_file_write_size 256k; 
    } 
} 

我不是一個笨的用戶,所以我不能分享的PHP一個配置。但是需要爲子目錄指定位置。這篇文章將告訴你如何做到這一點here

另一種方法是將PHP隔離到子目錄。與上述類似,只是改變這一行

# php parsing 
location ~ /codeigniter/.+\.php$ 

這篇文章對這個approach一個完整的例子。

+0

謝謝@edlee實際上,該網站已經正常工作,但沒有codeigniter網站。當我登錄網站時顯示域的根頁面。例如。 example.com/123/登錄後,該網址變爲example.com/123/login/dashboard/,但它顯示example.com/ – vishgarg

+0

的內容我嘗試了您的配置,但我仍然收到相同的內容。 – vishgarg

+0

N.P.只是爲了澄清 - 所以登錄後,它將您重定向到您的Web目錄的根目錄?因此,您希望example.com/成爲example.com/123/? – edlee