При удалении index.php из URL-адреса в codeigniter я получаю следующую ошибку.Не найден Запрошенный URL-адрес не был найден на этом сервере

#php #.htaccess #codeigniter #codeigniter-4

#php #.htaccess #codeigniter #codeigniter-4

Вопрос:

При удалении index.php с URL-адреса я получаю сообщение об ошибке Not found

От: — http://localhost/Inspire/index.php/welcome/dashboard

к этому

http://localhost/Inspire/welcome/dashboard

.htaccess

 RewriteEngine on
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]



config.php



$config['index_page'] = ''; 
  

Комментарии:

1. Не могли бы вы сообщить нам, с какого URL-адреса на какой URL-адрес вы пытаетесь перенаправить здесь для большей ясности, пожалуйста

2. Пожалуйста, просмотрите вопрос сейчас.

3. $config [‘uri_protocol’] = «REQUEST_URI» автоматически измените это

4. Все еще получаю ту же ошибку

5. где вы создаете файл .htaccess??

Ответ №1:

В Codeigniter 4 есть два разных файла .htaccess, вам нужно изменить один в общей папке:

 RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
  

Ответ №2:

Согласно вашему комментарию, он находится внутри папки приложения, поэтому он неправильный. Вы должны создать его внутри корневой папки веб-сайта.

Шаг: -1 Перейдите в корневую папку CodeIgniter и создайте .htaccess

 Path:
Your_website_folder/
.htaccess <——— this file
    application/
    assets/
    system/
    index.php
  

Напишите приведенный ниже код в .htaccess файле

 <IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>
  

Шаг: -2 Откройте папку application/config и откройте файл config.php . найдите и замените приведенный ниже код в config.php файле.

 //find the below code   
$config['index_page'] = "index.php" 
//replace with the below code
$config['index_page'] = ""  
  

Ответ №3:

Мне пришлось изменить строку:

 RewriteRule ^(.*)$ index.php/$1 [L,QSA]  
  

из файла htaccess в общедоступной папке в:

  RewriteRule ^(.*)$ index.php?/$1 [L]
  

Комментарии:

1. все еще нужен QSA для серверов на базе Linux

2. По какой-то причине мне это не понадобилось на нашем сервере Debian. Можете ли вы объяснить мне, что это означает?