Подтвердить что ты не робот

CodeIgniter: Можно ли удалить index.php без использования .htaccess?

По техническим причинам я не хочу использовать .htaccess для удаления index.php из URL-адреса в CodeIgniter. Я видел раздел маршрута. Я также пробовал использовать такой маршрут:

$route['(:any)'] = 'index.php/$1';

Но он не работает.

Можно ли удалить index.php с помощью маршрутизатора в CodeIgniter?

4b9b3361

Ответ 1

Is it possible to remove index.php without using .htaccess?

Нет. это нечто, выходящее за рамки php или codeigniter, его серверная вещь.

Почему?

Что происходит, когда пользователь пытается перейти на localhost/codeigniter/welcome/index?

MVC в основном скрывает все ваши php файлы внутри своих папок. и представить только один способ для любого пользователя взаимодействовать с вашим кодом через index.php

что происходит,

  • HTTP-запрос на ваш сайт, направленный на index.php
  • index.php загрузка корневого кодировщика кода и маршрутизатор callignigniter
  • Маршрутизатор просматривает URL-адрес (приветствуется/индексируется), затем перебирает файл приветствия из папки внутреннего контроллера и вызывает функцию индексации.

, это просто, что делают все фреймворки MVC, скрывают ваш код и используют один файл перед обработкой всех запросов и перенаправляют их с помощью класса маршрутизатора.

поэтому, если вы хотите hide index.php, вам нужно найти способ сообщить серверу просто перенаправить любой вызов index.php.

index.php - это дверь доступа для вашего сайта, и ваш сервер должен знать, что все запросы должны быть отправлены на него. так или иначе, и именно поэтому index.php/должен присутствовать в ur url или использовать некоторую конфигурацию сервера для перенаправления вызовов на него. но он всегда загружается

Ответ 2

Я сделал следующее для работы с маршрутами, для которых не требуется index.php в вашем URL-адресе.

  • Я переименовал index.php в index_ci.php по соображениям безопасности.
  • В файле .htaccess у меня есть следующее:

    DirectoryIndex index_ci.php index.html
    RewriteCond %{REQUEST_FILENAME} !-f  
    RewriteCond %{REQUEST_FILENAME} !-d  
    RewriteCond $1 !^(index_ci\.php) # do not allow direct access  
    RewriteRule ^(.*)$ index_ci.php/$1 [L,QSA]
    
  • My routes.php теперь принимает URL-адреса без префикса index.php. Пример:

    $route['welcome'] = "welcome";