Apache Documents tùy chỉnh error.html bao gồm các biến môi trường thông qua kiểm soát lỗi trang
Says "biến môi trường REDIRECT_ được tạo ra từ các biến môi trường đã tồn tại trước khi chuyển hướng. Chúng được đặt tên với tiền tố REDIRECT_, nghĩa là, HTTP_USER_AGENT
trở thành REDIRECT_HTTP_USER_AGENT
. "
Nói "Không có mục nào trong số này sẽ được đặt nếu mục tiêu ErrorDocument là chuyển hướng bên ngoài (bất kỳ thứ gì bắt đầu bằng tên lược đồ như http :, ngay cả khi nó đề cập đến cùng một máy chủ với máy chủ)."
Nói về SetEnv: "Các biến môi trường nội bộ được thiết lập bởi chỉ thị này được đặt sau khi hầu hết các chỉ thị xử lý yêu cầu ban đầu được chạy, chẳng hạn như kiểm soát truy cập và ánh xạ URI-to-filename. như đầu vào vào giai đoạn đầu của quá trình xử lý như chỉ thị RewriteRule, bạn nên đặt biến môi trường bằng SetEnvIf. "
Trên một số máy chủ, các biến môi trường người dùng tuyên bố phải bắt đầu với 'HTTP_' cho mục đích an ninh, ví dụ như: SetEnv HTTP_MY_VARIABLE "my value"
Dưới đây là một số cách .htaccess thiết và sử dụng các biến môi trường máy chủ, lấy từ sửa đổi của tôi mau hỏng Nhấn 5G Danh sách đen/Tường lửa http://perishablepress.com/5g-blacklist-2013/ để sử dụng báo cáo biến môi trường:
SetEnv myServerName %{SERVER_NAME}
RewriteCond %{QUERY_STRING} (base64_encode|localhost|mosconfig|open_basedir) [NC,OR]
RewriteCond %{QUERY_STRING} (boot\.ini|echo.*kae|etc/passwd) [NC,OR]
RewriteCond %{QUERY_STRING} (GLOBALS|REQUEST)(=|\[|%) [NC]
RewriteRule .* - [E=badQueryString:%0--%1--%2,F,L]
SetEnvIfNoCase User-Agent ^$ noUserAgent
SetEnvIfNoCase User-Agent (binlar|casper|cmsworldmap|comodo|diavol|dotbot|feedfinder|flicky|ia_archiver|jakarta|kmccrew|nutch|planetwork|purebot|pycurl|skygrid|sucker|turnit|vikspider|zmeu) badUserAgent=$1
<limit GET POST PUT>
Order Allow,Deny
Allow from all
Deny from env=badUserAgent
</limit>
Lưu ý việc sử dụng thông số, ví dụ: $ 0 -% 1 -% 2. % 0 cho chuỗi đầy đủ,% 1 cho kết quả phù hợp từ câu lệnh thứ nhất,% 2 the 2nd. Các dấu gạch nối là các ký tự hiển thị bằng chữ, để tách riêng các kết quả tham số bằng hình ảnh (không nghĩ là có cách nào để đặt dấu cách trong đó).
Dưới đây là một số phương pháp PHP truy cập các biến môi trường (trong trường hợp của tôi từ 403.php và 404.php). Lưu ý rằng bạn không tìm trong phpinfo(), nhưng trong $ SERVER và các biến của bạn được bắt đầu bằng REDIRECT Cũng lưu ý rằng với chuyển hướng 403/404, QUERY_STRING trở thành REDIRECT_QUERY_STRING Đây là thứ có thể dễ dàng phụ thuộc vào máy chủ, vì vậy hãy kiểm tra $ _SERVER để biết giá trị thực của bạn.Ví dụ,
if (getenv("HTTP_REFERER") !== FALSE) {
$httpref = getenv("HTTP_REFERER");
} else {
$httpref = '';
}
if (isset($_SERVER['REDIRECT_STATUS'])) {
$status = $_SERVER['REDIRECT_STATUS'];
} else {
$status = '';
}
if (isset($_SERVER['REMOTE_HOST'])) {
$remoteHost = $_SERVER['REMOTE_HOST'];
} else {
$remoteHost = '';
}
if (isset($_SERVER['REDIRECT_QUERY_STRING'])) {
$querystring = $_SERVER['REDIRECT_QUERY_STRING'];
} else {
$querystring = '';
}
if (isset($_SERVER['REDIRECT_noUserAgent'])) {
$htaccessErrors[] = 'NoUserAgent';
}
if (getenv("REDIRECT_badQueryString") !== FALSE) {
/* must exactly match what shows up in $_SERVER, is case sensitive (e.g. badQueryString not BadQueryString) */
$htaccessErrors[] = 'badQueryString:'.getenv("REDIRECT_badQueryString");
}
tôi trang trải trong một số sâu trong http://lcblog.lernerconsult.com/2013-server-alert-you-file-not-found-errors/
bạn có chắc file .htaccess được kích hoạt cho rằng thư mục cụ thể? hãy thử một chỉ thị khác có hiệu quả dễ dàng xác minh được. – goat
câu hỏi SO khác này có giúp bạn không? http://stackoverflow.com/questions/3780866/why-is-my-env-empty – luchosrock