Nginx
Nginx重寫規則子文件夾404錯誤
我不知道應該如何使用 Nginx 重寫規則設置我的 index.php 文件,它將像下面的範例一樣工作。
如果我訪問 url,它會給我 404 錯誤 not found instad echo ‘hello’。
網址:
http://www.example.com/directory/sub-directory/
來自給定 URL 的 /sub-directory/ 實際上不是 /directory/ 中的真實目錄。如果我訪問該 URL,我會收到 404 錯誤 - 這確實可以,但 /sub-directory/ 是友好的 URL(沒有查詢?argument=value)。
/sub-directory/ 不是固定值(在下面的範例中是),它可以是 /sub-directory-new/ - 取決於。
那麼,對於 URL 中 /directory/ 之後 /value/ 中的任何值,如果我訪問那種 URL,我怎麼可能不會收到 404 錯誤?
/目錄/中的Index.php:
$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; $wanted = "sub-directory"; $tokens = explode('/', $actual_link); $result = $tokens[sizeof($tokens)-2]; // result is "sub-directory" if($wanted == $result) { echo "hello"; }
Nginx:
location /directory { try_files $uri $uri/ /directory/$uri; error_page 404 =200 /directory }
我是否應該為規則添加一些參數,例如:location /directory$1?如果是這樣,是哪一個以及如何讓它工作?
有人有什麼想法嗎?
感謝分享和資訊!
在 nginx 中做友好 URL 的常用方法是這樣的:
location /directory { try_files $uri $uri/ @rewrites; } location @rewrites { rewrite ^ /directory/index.php; }
此配置假定您的
root
指令指向所在的目錄/directory
。所以,這裡 nginx 會先嘗試文件或目錄是否存在於真實的文件系統中。如果該文件不存在,那麼它將請求轉發到您的 PHP 文件。當然,您需要在 nginx 中正確配置 PHP 處理塊。