NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
В файле htaccess область действия директивы <Files>
применима только к этому каталогу (я полагаю, чтобы избежать путаницы, когда правила / директивы в htaccess подкаталогов будут применяться с суперпотоками от родителя).
Итак, вы можете иметь:
<Files "log.txt">
Order Allow,Deny
Deny from all
</Files>
В файле htaccess в вашем каталоге inscription
. Или вы можете использовать mod_rewrite для сортировки дескриптора. Оба случая запрещают доступ к файлу htaccess, а также log.txt:
RewriteRule /?\.htaccess$ - [F,L]
RewriteRule ^/?inscription/log\.txt$ - [F,L]
Поместите нижнюю строку в ваш .htaccess файл и замените имя файла как хотите
RewriteRule ^(test\.php) - [F,L,NC]
Я не верю, что принятый в настоящее время ответ правильный. Например, у меня есть следующий файл .htaccess
в корне виртуального сервера (apache 2.4):
<Files "reminder.php">
require all denied
require host localhost
require ip 127.0.0.1
require ip xxx.yyy.zzz.aaa
</Files>
Это предотвращает внешний доступ к reminder.php
, который находится в подкаталоге. У меня есть аналогичный файл .htaccess
на моем сервере Apache 2.2 с тем же эффектом:
<Files "reminder.php">
Order Deny,Allow
Deny from all
Allow from localhost
Allow from 127.0.0.1
Allow from xxx.yyy.zzz.aaa
</Files>
Я не знаю точно, но я подозреваю, что это попытка определить подкаталог, особенно в .htaccess
, viz <Files ./inscription/log.txt>
, что приводит к сбою. Было бы проще поместить файл .htaccess
в тот же каталог, что и log.txt
, то есть в каталог inscription
, и он будет работать там.
Ну, вы можете использовать тег <Directory>
, например:
<Directory /inscription>
<Files log.txt>
Order allow,deny
Deny from all
</Files>
</Directory>
Не использовать ./
, потому что если вы просто используете /
, он смотрит на корневую директорию вашего сайта.
Для более подробного примера посетите http://httpd.apache.org/docs/2.2/sections.html
<Directory>
не разрешен в .htaccess
. В .htaccess
сам файл .htaccess
является контейнером & quot; Directory i> & quot; (файл конфигурации для каждого каталога).
– MrWhite
30 January 2017 в 14:47
Redirect /inscription/log.txt access_denied.html
Это перенаправит пользователя в access_denied.html
, если пользователь перейдет к inscription/log.txt
в каталоге надписей.
– Nicholas English
30 January 2017 в 15:47
Сильное совпадение с образцом - это метод, который я использую здесь в скоропортящемся прессе. Используя сильное сопоставление шаблонов, этот метод предотвращает внешний доступ к любому файлу, содержащему «.hta», «.HTA» или любую их нечувствительную к регистру комбинацию. Для иллюстрации этот код предотвратит доступ через любой из следующих запросов:
и т. д. и т. д. Ясно, что этот метод очень эффективен для защиты файлов HTAccess вашего сайта. Кроме того, этот метод также включает в себя укрепляющую директиву «Удовлетворить все». Обратите внимание, что этот код должен быть помещен в файл HTAccess вашего домена:
# STRONG HTACCESS PROTECTION
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>
<Files ~"^\..*">
.
– Time Sheep
15 November 2016 в 10:12
<Files>
применима только к этому каталогу " - Нет, нет. Он относится к этому каталогу и i> ко всем подкаталогам под ним. Таким образом,<Files "log.txt">
поймает/log.txt
и i>/inscription/log.txt
. – MrWhite 30 January 2017 в 16:45