2013-11-03 78 views
2

在我的網站我只有兩個頁面「index.php」和「page.php」,無論我鍵入我重定向到本地主機,例如,如果我去localhost/randompage而不是重定向到404.html我去到本地主機(即的index.php)nginx不重定向404錯誤

這裏是我的conf:

server { 
    listen  80; 
    server_name localhost; 
root html; 
index index.php; 

    location/{ 

     if ($request_uri !~* '\/|page\.php\?.*') { 
      return 404; 
     } 

     try_files $uri $uri/ /index.php; 
    } 

    error_page 404    /404.html; 
    location = /404.html { 
     root html; 
    } 

    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root html; 
    } 

    location ~ \.php$ { 
    try_files $uri =404; 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include  fastcgi_params; 
    } 

} 

我應該怎麼改?

+0

我沒有看到塊'location =/50x.html'和'location =/404.html'的任何用法,您正在定義已經在服務器範圍中定義的同一個根,那麼您有一個'if'和'try_files'爲什麼不能同時使用'try_files'語句,如果你解釋你到底想要完成什麼,我可以幫你優化配置文件 –

+0

@MohammadAbuShady感謝你的幫助,我只是想向{mydomain.com,mydomain.com/index.php,mydomain.com/page.php?var1 =&var2 =}以外的網址發送請求,返回404錯誤,然後顯示404.html頁面 –

回答

3

我有一個類似的問題。註釋掉這一行固定它:

try_files $uri $uri/ /index.php; 

try_files檢查是否給定的URL的作品。如果不是,它會嘗試查看給定的URL是否作爲目錄。如果沒有,它會重定向到/index.php。如果沒有這一行,它將提供用error_page表示的404文件。

希望能爲你工作。