Скажем, у меня есть index.php
файл в моем общедоступном каталоге.
С помощью DirectoryIndex index.php
, Я могу установить этот файл в качестве индекса по умолчанию на моем веб-сайте.
Но что, если я не хочу, чтобы пользователи заходили через www.example.com/index.php
, только www.example.com
, Как мне это сделать?
Я добавил следующий код:
if (strpos($_SERVER['REQUEST_URI'], 'index.php')) {
readfile('404.html');
exit;
}
в начале index.php
, так что вход по www.example.com/index.php
приведет к ошибке 404, но ввод через www.example.com
не будет (таким образом, не давая потенциальному злоумышленнику никакой информации о том, использую ли я PHP или нет). Не лучшее решение в мире, но работает.
Ваш вопрос не имеет смысла. Если вы хотите показать веб-страницу пользователю, который запрашивает www.example.com
тогда должен быть DirectoryIndex какой-то.
DirectoryIndex index.php index.html
заставит apache искать DocumentRoot сервера для index.php, а затем index.html и представить пользователю отрисованную версию первого найденного.
Вы не можете действительно "спрятать" страницу. Вы можете запретить доступ (что приводит к ошибке 403) с помощью htaccess. Вы также можете перенаправить с помощью mod_rewrite либо из /index.php (как предлагается) в /, либо из /index.php в ваш файл 404 (как вы делаете сейчас). Самым близким к скрытию страницы было бы использование mod_rewrite для перехода от index.php к /, поэтому, когда пользователи вводят www.example.com или www.example.com/index.php, он отображается как www.example. com
Вы можете "запретить" /index.php с чем-то вроде
<Location /index.php>
Order deny,allow
Deny from all
</Location>
Или перенаправьте из /index.php в / с помощью mod_rewrite (что немного удобнее для пользователя).
В вашем комментарии к Коосу я вижу, что вы хотите скрыть index.php, чего вы действительно не можете сделать. Лучше всего поместить части, которые вы хотите скрыть, в другой файл и включить этот файл в index.php. Если все сделано правильно, пользователь не увидит ни оператора include, ни включенного файла, только результат.