2013-01-24 61 views
3

我有auth_basic保護我的網站的一部分:自定義401頁不提示輸入憑據nginx的

location/{ 
      auth_basic "Authorization Required"; 
      auth_basic_user_file .htpasswd; 
      index app.php; 
      try_files $uri @rewriteapp; 
    } 

對於未經授權的用戶(那些誰點擊「取消」),我想顯示自定義錯誤頁面。以下是我已經做到了:

error_page 401 = @error401; 

    location @error401 { 
        rewrite^/error/401.html redirect; 
    } 

    location /error { 
      expires max; 
      add_header Pragma public; 
      add_header Cache-Control "public"; 
      index app.php; 
      try_files $uri @rewriteapp; 
    } 

我不得不創建@ error401別名,所以我可以指定「重定向」,因爲如果我使用內部重定向,我的應用程序將處理的原始請求(和給訪問到實際請求的頁面!)

所以這工作正常,頁面顯示。 問題是,現在nginx甚至不會要求用戶提供憑據。

有什麼辦法解決這個問題嗎?或者有更好的方法來處理這個問題?

回答

3

這是我能夠完成你想要做什麼:

## Path must be prefixed with a /, i.e. /401.html, NOT 401.html 
error_page 401 /401.html; 

location ~ (401.html)$ { 
    alias /usr/share/nginx/html/$1; 
} 
+1

謝謝,你的回答需要一些定製,因爲它需要服務的PHP文件和不是一個靜態的,但我會嘗試如果我能適應它。 – Julien

+0

@Julien您是否找到了重定向問題的解決方案?錯誤子句/重定向只是簡單地忽略認證並且首先重寫 – vongolashu

0

您應該添加auth_basic off;

相關問題