Codeigniter отображает файловую структуру на локальном хосте

У меня есть установка Codeigniter с контроллером под названием vendors. У меня также есть папка с именем vendors в корневом каталоге проекта.

Проблема в том, что всякий раз, когда я пытаюсь вызвать www.example.com/vendors, Codeigniter направляет маршрут к папке с именем vendors в корневом каталоге и отображает файловую структуру в браузере.

Как я могу исправить это, кроме переименования контроллера или папки.

Разве Codeigniter не должен искать контроллер только в папке контроллеров?

цитата из комментария OP:

это происходит на локальном хосте (apache 2.4.27 и php 7.1.9), отлично работает на рабочем сервере.


person Jude Fernandes    schedule 06.11.2017    source источник
comment
Какой веб-сервер вы используете? Вам нужно включить список каталогов в конфигурации веб-сервера.   -  person jfadich    schedule 06.11.2017
comment
переименуйте свой контроллер в my_vendor.... в противном случае вам понадобится конструктор в вашем контроллере   -  person Vickel    schedule 06.11.2017
comment
@jfadich происходит на локальном хосте, отлично работает на рабочем сервере.   -  person Jude Fernandes    schedule 06.11.2017
comment
Переименование @Vickel было последним средством, поскольку оно требует большого рефакторинга. Не могли бы вы рассказать мне немного больше о добавлении конструктора, потому что у контроллера уже есть конструктор.   -  person Jude Fernandes    schedule 06.11.2017
comment
@Vickel проверил это и, кажется, относится к классам, а не к папкам, и в любом случае поставщики, похоже, не нарушают и зарезервировали ключевые слова.   -  person Jude Fernandes    schedule 06.11.2017


Ответы (1)


После проверки .htaccess и подобных файлов я нашел 2 решения скрыть папку на локальном хосте, но сделать так, чтобы она содержала файлы (например, изображения), доступные через веб-страницу.

первое — добавить в корневой файл .htacess:

Options -Indexes

так что это будет выглядеть так:

# DON'T FORGET TO CHANGE $config['index_page'] = '';
RewriteCond $1 !^(index\.php|assets|photos|videos|vendors|robots\.txt|favicon\.ico) 
RewriteRule ^(.*)$ /index.php/$1 [L] 
Options -Indexes

второй — добавить пустой файл index.html в эту папку (vendors).

Файловая структура теперь скрыта!

edit: на самом деле вы видите, что в папках codigniter есть файлы index.html, которые выглядят так:

<html>
<head>
    <title>403 Forbidden</title>
</head>
<body>

<p>Directory access is forbidden.</p>

</body>
</html>
person Vickel    schedule 06.11.2017
comment
Первому методу удалось заблокировать просмотр структуры папок и показать запрещенную страницу, но я бы хотел, чтобы вместо этого он направлялся к моему контроллеру, который называется Vendors, а не отображал запрещенную страницу. - person Jude Fernandes; 07.11.2017
comment
Я не могу воспроизвести вашу проблему, если я убираю поставщиков из .htaccess и имею контроллер Vendors.php в папке моего контроллера, он выполняет свой метод индекса. Убедитесь, что Vendors.php написан в верхнем регистре. - person Vickel; 07.11.2017
comment
Вы пробовали это на локальном хосте или на сервере? С самого начала имя контроллера было Vendors. Может быть, у вас есть какая-то конфигурация php, которая препятствует прямому доступу к файловой структуре? - person Jude Fernandes; 07.11.2017
comment
на локальном хосте, используя easyPhp, php 5.5.0, apache 2.4.4. - person Vickel; 07.11.2017
comment
apache 2.4.27 и php 7.1.9 для меня. - person Jude Fernandes; 08.11.2017
comment
какова конфигурация производственного сервера? - person Vickel; 08.11.2017
comment
апач 2.2 и пхп версии 7.1 - person Jude Fernandes; 08.11.2017