Как удалить public/index.php/ из URL в Codeigniter 4
Мне нужен обычный URL, например http://www.sample.com/controller не http://www.sample.com/public/index.php/controller.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ public/index.php/$1 [L]
Мой файл.htaccess
18 ответов
Просто делать
Шаг 1. В каталоге public/ скопируйте index.php и.htaccess в корневой каталог проекта.
Шаг 2: В корневом каталоге проекта откройте index.php и отредактируйте следующую строку:
index.php -> $pathsPath = FCPATH. '../app/Config/Paths.php';
к
index.php => $pathsPath = FCPATH . 'приложение / Config / Paths.php';
Хорошо , вот как я решил эту проблему: вам нужно 2 файла.htaccess,
первый в корневом пути "/.htaccess" вашего проекта, второй в общей папке "public /.htaccess"
а вот и первый "/.htaccess"
# this is my version (Nassim) of the htaccess file , I use this one in the root directory "/"
# of the project and a second .htaccess in the public directory
DirectoryIndex /public/index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|assets|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./public/index.php/$1 [L,QSA]
и второй (идет с установкой CI): "public/.htaccess"
# I recommend you remove `IfModule`. Because if you need mod_rewrite,
# you don't need `IfModule`. If you don't need it, you don't need this file
# at all.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond $1 !^(index\.php|images|assets|doc|data|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
перейдите в app / Config / App.php, а затем в public $indexPage = 'index.php'; изменить на общедоступный $indexPage = '';
работает как шарм
Создайте файл с именем index.php вне общедоступного каталога и напишите команду
require_once './public/index.php';
Вот и все.
- Настройте виртуальные хосты (если вы еще этого не сделали), но обязательно укажите каталог / public (пример xampp):
ServerAdmin webmaster@example.com
ServerName example.com
DocumentRoot "path-to-project/public"
<Directory "path-to-project/public">
Order allow,deny
Allow from all
AllowOverride All
Require all granted
</Directory>
- Не трогайте файлы.htaccess в дистрибутиве CI4 по умолчанию
- Отредактируйте app / Config / App.php - $baseURL = 'http://www.example.com/'; $indexPage = '';
Структура проекта
Если запустить проект в Xamp, показать, как это
Скопируйте public-->index.php в корневую папку-->index.php
Теперь запустите Like this в веб-браузере, покажите эту ошибку, чтобы решить эту проблему.
$pathsConfig = FCPATH . '../app/Config/Paths.php';
to
$pathsConfig = FCPATH . 'app/Config/Paths.php';
Теперь беги
создать .htaccess в корневой папке
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Теперь вы можете переключить имя вашего контроллера без .htaccess, ваш URL должен быть таким
http://localhost:8080/payinlinks/index.php/login
еще
http://localhost:8080/payinlinks/login
Первый шаг - открыть файл app.app. И изменения упомянутые ниже. Вы должны сделать это в своем файле App.php. удалите index.php из URL-адреса Codeigniter.
Итак, перейдите в project_name / app / Config / App.php и измените указанное ниже: Как удалить Public / index.php / From URL в Codeigniter 4
public $baseURL = 'http://localhost:8080';
To
public $baseURL = 'http://localhost/your_project_name/';
И второе изменение в файле app.php:
public $uriProtocol = 'REQUEST_URI';
To
public $uriProtocol = 'PATH_INFO';
Шаг 2
В корневом каталоге проекта откройте index.php и отредактируйте следующую строку:
$pathsPath = FCPATH . '../app/Config/Paths.php';
change TO
$pathsPath = FCPATH . 'app/Config/Paths.php';
Мы также можем удалить index.php в Codeigniter, используя.htaccess. Я привел пример ниже.
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Шаг 1:
- Перейдите в Your_Project_Folder > App > Config > App.php
- измените на $baseURL='http://localhost/Your_Project_Name'
- изменить на $indexPage=""
Шаг 2:
Перейдите в Your_Project_Folder > Public
Скопируйте .httaccess и index.php
Вставьте эти файлы в Your_Project_Folder
Шаг 3:
Перейдите в папку Your_Project_Folder > index.php
изменить, FCPATH . '../app/Config/Paths.php' в FCPATH. 'приложение/Конфигурация/Пути.php'
ВСЕ СДЕЛАНО!!!
Я понятия не имею, как ты это получишь .htaccess
, Если вы загрузите CodeIgniter 4 отсюда и увидите, что файл Htaccess отличается от того, что вы добавили.
Поскольку существует много изменений в CodeIgniter (1,2,3) для Codeigniter 4, htaccess перемещен в public/
папка, в которой будет установлен корень документа и .htaccess
какое место снаружи не будет действовать в CI 4
Правильный путь к .htaccess
public/.htaccess
Примечание: я только что проверил index.php
Проблема с URL, и не было такой проблемы. работал / грузился нормально без index.php
Шаг 1. В каталоге public/ скопируйте index.php и.htaccess в корневой каталог проекта.
Шаг 2: В корневом каталоге проекта откройте index.php и отредактируйте следующую строку:
изменение:
$pathsPath = FCPATH. '../app/Config/Paths.php';
изменить TO
($pathsPath = FCPATH. 'app / Config / Paths.php';)
Перейдите в app/Config/App.php и найдите
public $indexPage = 'index.php';
. Удалять
index.php
из этой общедоступной переменной и все.
измените index.php =>
require realpath(FCPATH . 'app/Config/Paths.php') ?: FCPATH . '../app/Config/Paths.php';
к
require realpath(FCPATH . 'app/Config/Paths.php') ?: FCPATH . 'app/Config/Paths.php';
Создайте файл .htaccess в /public с помощью:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Вы пробовали это:
RewriteEngine On
RewriteBase /yoursite.com/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ public/index.php/$1 [L]
Мне удалось "решить" проблему на моем хостинг-сервере в одном проекте. После того, как я создал новый проект с более новой версией codeigniter 4, я понял, что больше не могу использовать то же решение, и после нескольких часов исследований я нашел очень простое решение.
Что я сделал, так это изменил корневой каталог на общую папку, используя.htaccess, который находится в корневой папке проекта.
#RewriteEngine on
#RewriteCond %{HTTP_HOST} ^mydomain.com$ [NC,OR]
#RewriteCond %{HTTP_HOST} ^mydomain.com$
#RewriteCond %{REQUEST_URI} !public/
#RewriteRule (.*) /public/$1 [L]
Используя этот трюк, я мог без проблем загрузить свой codeigniter 4 на живой сервер. Собственно, я использовал это для настройки проекта codeigniter 4 внутри поддомена.
Из общедоступного каталога скопируйте .htaccess и index.php в свой корневой каталог, а затем измените
require realpath(FCPATH . '../app/Config/Paths.php') ?: FCPATH . '../app/Config/Paths.php';
к
require realpath(FCPATH . 'app/Config/Paths.php') ?: FCPATH . 'app/Config/Paths.php';
Чтобы решить указанную выше проблему, удалив public / index.php из URL-адреса, вам следует выполнить следующие шаги:
Скопируйте файлы index.php и .htaccess из
public/
каталог.Добавьте файлы в корневой каталог проекта.
Измените файл index.php в корневом каталоге проекта
$pathsPath = realpath(FCPATH . '../app/Config/Paths.php');
в$pathsPath = realpath(FCPATH . 'app/Config/Paths.php');
Вот полный код файла index.php:
// Valid PHP Version?
$minPHPVersion = '7.2';
if (phpversion() < $minPHPVersion)
{
die("Your PHP version must be {$minPHPVersion} or higher to run CodeIgniter. Current version: " . phpversion());
}
unset($minPHPVersion);
// Path to the front controller (this file)
define('FCPATH', __DIR__ . DIRECTORY_SEPARATOR);
// Location of the Paths config file.
// This is the line that might need to be changed, depending on your folder structure.
$pathsPath = realpath(FCPATH . 'app/Config/Paths.php');
// ^^^ Change this if you move your application folder
/*
*---------------------------------------------------------------
* BOOTSTRAP THE APPLICATION
*---------------------------------------------------------------
* This process sets up the path constants, loads and registers
* our autoloader, along with Composer's, loads our constants
* and fires up an environment-specific bootstrapping.
*/
// Ensure the current directory is pointing to the front controller's directory
chdir(__DIR__);
// Load our paths config file
require $pathsPath;
$paths = new Config\Paths();
// Location of the framework bootstrap file.
$app = require rtrim($paths->systemDirectory, '/ ') . '/bootstrap.php';
/*
*---------------------------------------------------------------
* LAUNCH THE APPLICATION
*---------------------------------------------------------------
* Now that everything is setup, it's time to actually fire
* up the engines and make this app do its thang.
*/
$app->run();
В CodeIgniter версии 4.2 или выше вы должны следовать3 steps
:
1st Step:
Перейти в эту папку
Приложение -> конфигурация -> app.php
Обновить сyour project folder name
как мы делаем в Like this:
public $baseURL = 'http://localhost/your_project_name/';
В случае, если установкаci 4
с использованиемcomposer
то у вас есть этот тип, который вам нужно изменить с указанным выше:
public $baseURL = 'http://localhost:8080';
2nd Step:
Перейти в папку иcopy
и файлы (помните, копируйте их, а не вырезайте из них здесь) Затем их в каталоге
Примечание. Так же, как мы удаляем в
Codeigniter 3
создав файл в корневой папке иpaste
соответствующий код в файле `.htaccess'.
3rd Step:
Заменить папки.htaccess
код файла с этим:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Затем откройтеroot
папкиindex.php
файл и контрольная строка20
или эта строка:
require FCPATH . '../app/Config/Paths.php';
и удалить../
из него вот так:
require FCPATH . 'app/Config/Paths.php';
В случае, если вы создали
js
папка вpublic
папку и соединил их с помощьюbase_url
наviews/header.php
views/footer.php
илиviews/index.php
тогда могут возникнуть проблемы, и эти файлы не будут получены из-за связанных с этим проблем:
Когда мы используем
cdn
это дает этоsyntax
который мы сделали локальным вот так, но из-заid="bootstrap-style"
это возникает проблема, поэтому удалите эту форму этой строки:
<link href="<?php echo base_url();?>/public/assets/css/bootstrap.min.css" id="bootstrap-style" />
Также сформируйте другие
linked
файл удалить этоtype="text/css"
или любойid=""
возникает проблема.
Правильный способ добавить ссылку — определить
rel="stylesheet"
по ссылке вот так:
<link rel="stylesheet" href="<?php echo base_url();?>/public/assets/css/bootstrap.min.css" />
В моем случае я получил
bootstrap
иcss
сопутствующие проблемы.