我有.htaccess目前設置爲重寫任何沒有句點或斜槓與.php擴展名相當(所以「富」內部拉起「foo.php」 )通過如下:「欺騙」404找不到錯誤與.htaccess
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !(.*)\.php
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/.]+)$ $1.php [L,NS]
不過,我想直接請求「foo.php」有404回來,就好像該文件不存在(就好像有人試圖「foo.asp」或「foo.blargh」)。我知道有[F]和[G]標誌,但我不希望「禁止」(403)或「消失」(410),因爲這些不同於不存在文件返回的結果(404)。
有沒有辦法做到這一點?
更新1
我已經試過
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.php\ HTTP/
RewriteRule ^(.*)$ /error.php?e=404 [R=404,L,NS]
其中一期工程...直到我嘗試使用ErrorDocument處理程序。假設「error.php」我的文檔根目錄,沿ErrorDocument 404 /error?e=404
線東西(我也試過用error.php等)反芻錯誤
未找到
請求的URL /foo.php在此服務器上未找到。
此外,遇到500內部服務器錯誤錯誤,而 試圖使用ErrorDocument來處理請求。
...但只有當試圖訪問實際存在的.php頁面(如foo.php);任何嘗試訪問實際上不存在的頁面(因此不會觸發我的第二條重寫規則)將進入由ErrorDocument處理程序指定的頁面。
[R = 404]無效。你是否嘗試重寫一個不存在的文件?例如:'RewriteRule ^(。*)$ dummy404.htm [L,NS]'。這應該會導致404錯誤。 – Floern
此路由的問題是,我得到'在此服務器上未找到請求的URL /dummy.htm .'而不是'在此服務器上找不到請求的URL /foo.php。 ' –