簡體   English   中英

500而不是404,500本身會拋出500

[英]500 instead of 404 and 500 throws 500 itself

我在子文件夾中有一個站點,在其中我有一個.htaccess文件,該文件可以正常運行,但是如果規則找不到任何內容,則會引發500內部服務器錯誤,而不是404,但是我想我可以通過添加500來解決該問題。錯誤文檔,但“ 500錯誤”頁面(除經典500消息外)顯示:

“此外,嘗試使用ErrorDocument來處理請求時,遇到了500 Internal Server Error錯誤。”

所以我有兩個問題:

  1. 為什么加薪500而不是404?
  2. 是什么原因導致在處理500錯誤文檔時出現“其他”錯誤?

到目前為止,這是我的.htaccess

DirectorySlash On

RewriteEngine On
RewriteBase /mysubdir/

ErrorDocument 404 /mysubdir/404.php
ErrorDocument 500 /mysubdir/500.php

RewriteRule ^folderexcludedone(/|$) - [NC,L]
RewriteRule ^folderexcludedtwo(/|$) - [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+)$ $1/ [L,R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ $1.php [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]*)/?$ $1.php?$1=$2 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)/([^/]*)/?$ $1.php?$2=$3 [L,QSA]

嘗試以下規則:

DirectorySlash On

RewriteEngine On
RewriteBase /mysubdir/

ErrorDocument 404 /mysubdir/404.php

RewriteRule ^(folderexcludedone|folderexcludedtwo)(/|$) - [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+)$ $1/ [L,R]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME}.php !-f
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/?$ $1.php [L,QSA]

RewriteRule ^([^/]+)/([^/]+)/?$ $1.php?$1=$2 [L,QSA]

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ $1.php?$2=$3 [L,QSA]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM