CodeIgniter удаление index.php из url

Мои текущие URL-адреса выглядят следующим образом [mysite]index.php/[rest of the slug].
Я хочу вырезать index.php из этих URL-адресов.

mod_rewrite включен на моем сервере apache2. В config, $config['index_page'] = '';

В моем корневом каталоге codeignitor .htaccess содержится

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

Но все же он не работает. Где я иду не так?

Ответ 1

Попробуйте выполнить

Откройте config.php и выполните следующие замены

$config['index_page'] = "index.php"

к

$config['index_page'] = ""

В некоторых случаях установка по умолчанию для uri_protocol не работает должным образом. Просто замените

$config['uri_protocol'] ="AUTO"

по

$config['uri_protocol'] = "REQUEST_URI"

.htaccess

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

Примечание:.htaccess код зависит от сервера хостинга. На каком-то сервере хостинга (например: Godaddy) нужно использовать дополнительный? в последней строке выше кода. Следующая строка будет заменена последней строкой в ​​применимом случае:

// Replace last .htaccess line with this line
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 

Ответ 2

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

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

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

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

Шаг: -3 ​​ Запишите ниже код в файле .htaccess

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

Шаг: -4 В некоторых случаях настройка по умолчанию для uri_protocol работает неправильно. Чтобы решить эту проблему, просто откройте файл "application/config/config.php", затем найдите и замените приведенный ниже код

//find the below code
$config['uri_protocol'] = "AUTO"
//replace with the below code
$config['uri_protocol'] = "REQUEST_URI" 

Все, кроме Wamp Server, не работает, потому что rewrite_module по умолчанию отключен, поэтому нам нужно включить его. для этого сделайте следующее

  • Щелкните левой кнопкой мыши значок WAMP
  • Apache
  • Модули Apache
  • Левый клик rewrite_module

Ссылка

Ответ 3

Шаг 1:

Добавьте это в файл htaccess

<IfModule mod_rewrite.c>
  RewriteEngine On
  #RewriteBase /

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^ index.php [QSA,L]
</IfModule>

Шаг 2:

Удалить index.php в configignign config

$config['base_url'] = ''; 
$config['index_page'] = '';

Шаг 3:

Разрешить переопределение htaccess в конфигурации Apache (команда)

sudo nano /etc/apache2/apache2.conf

и отредактируйте файл и измените его на

AllowOverride All

для папки www

Шаг 4:

Включено переписывание модема apache (команда)

sudo a2enmod rewrite

Шаг 5:

Перезапустить Apache (Command)

sudo /etc/init.d/apache2 restart

Ответ 4

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

использование

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$1 [PT,L]

если у вас есть url в этом порядке site.com/index.php/class/method/id

NB: удалить index.php в config.php должен быть config [index_page] = ""

NB: обратите внимание на разницу на последней строке вместо $0 используйте $1

Ответ 5

Шаг 1 = > Поместите файл .htaccess в корневую папку, где существуют папки приложений и систем.

Шаг 2 = > Если ваш веб-путь с использованием подпапки, например - yourdomain.com/project/, затем используйте следующий код в файле htaccess

RewriteEngine on
RewriteBase    /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]

Если ваш веб-путь с использованием корневой папки типа - yourdomain.com - используйте следующий код в файле htaccess

RewriteEngine on
RewriteBase    /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

Ответ 6

Есть два шага:

1) Изменить config.php

$config['index_page'] = 'index.php';

To

$config['index_page'] = '’;

2) Создать/Редактировать файл .htaccess

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

Ответ 7

на вашем htaccess используйте это,

RewriteEngine On
RewriteBase /root_folder_name/
RewriteCond %{REQUEST_URI} ^system.*
RewriteCond $1 !^(index\.php|images|js|uploads|css|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Надеюсь, что это поможет.

Ответ 8

  • сделать .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['index_page'] = ''; 
    

удалить index.php в файле config.php

  1. переписать с вашего сервера.

Ответ 9

попробуйте это. Он может помочь вам, поскольку он работает для меня.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

введите код в файл root htaccess и убедитесь, что у вас есть

$config['index_page'] = '';

в вашем файле конфигурации.

Пожалуйста, дайте мне знать, если у вас возникнут какие-либо проблемы.

Ответ 10

1. Создайте новый файл .htaccess в корневом каталоге.

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

2. Перейдите в файл config.php и перейдите из $config['index_page'] = 'index.php' в $config['index_page'] = ''

Ответ 11

+ Copy .htaccess from Application to Root folder
+ edit .htaccess and put

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /ci_test/

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #When your application folder isn't in the system folder
    #This snippet prevents user access to the application folder
    #Submitted by: Fabdrol
    #Rename 'application' to your applications folder name.
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    # Submitted by: ElliotHaughin

    ErrorDocument 404 /index.php
</IfModule>

Note: make sure your web server is enable for  "rewrite_module"

+ Remove index.php from $config['index_page'] = 'index.php';
- edit config.php in application/config
- search for index.php
change it from  $config['index_page'] = 'index.php'; to  $config['index_page'] = '';

Пожалуйста, смотрите это видео для справки https://www.youtube.com/watch?v=HFG2nMDn35Q

Ответ 12

Прежде всего, вам нужно перезагрузить движок сервера apache. Эта ссылка поможет вам в этом

http://www.anmsaiful.net/blog/php/enable-apache-rewrite-module.html

RewriteEngine On
RewriteBase /your_folder_name/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

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

это будет ваш файл .htaccess. теперь попробуйте. Эта настройка работает для меня.

Ответ 13

вы можете перейти в файл config\config.php и удалить значение index.php из этой переменной

$config['index_page'] = 'index.php'; // delete index.php

создайте файл .htaccess и вставьте в него этот код.

<IfModule mod_rewrite.c>

 Options +FollowSymLinks

 RewriteEngine On
 #Send request via index.php
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule>

хороший шанс

Ответ 14

  Removing index.php from url of codeigniter   

Three steps are require to remove index.php from url in Codeigniter.

1)Create .htacess file in parallel to application holder and just copy past the following code:

RewriteEngine On
RewriteBase /CodeIgniter/
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

2) Change $config['index_page'] to blank in config.php in application folder as below:

$config['index_page'] = '';

3) Enable "rewrite_module" of apache.

Ответ 15

Как разработка, так и производство

    # Development
    RewriteEngine On
    RewriteBase /your_local_folder/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index\.php|images|scripts|styles|vendor|robots\.txt)
    RewriteRule ^(.*)$ index.php/$1 [L]

    #Production PHP5 CGI mode
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index\.php|images|scripts|styles|vendor|robots\.txt)
    RewriteRule ^(.*)$ index.php?/$1 [L]

Ответ 16

Ну, все эти ответы хороши, но для новичков (которые делают первый раз) это путают. Существуют другие файлы htaccess, которые находятся в контроллере, но мы должны отредактировать или добавить htaccess в основную папку проекта.

Это ваша папка-кодогенератор, где файл находится как приложение, система, активы, загрузки и т.д.

Your_project_folder/
application/
assets/
cgi-bin/
system/
.htaccess---->(Edit this file if not exist than create it)
index.php

Измените этот файл, как указано ниже:

<IfModule mod_rewrite.c>
  RewriteEngine On
  # !IMPORTANT! Set your RewriteBase here and don't forget trailing and leading
  #  slashes.
  # If your page resides at http://www.example.com/mypage/test1
  # then use RewriteBase /mypage/test1/
  # Otherwise /
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
  # If we don't have mod_rewrite installed, all 404's
  # can be sent to index.php, and everything works as normal.
  # Submitted by: Anand Pandey
  ErrorDocument 404 /index.php
</IfModule>

и да, конечно, вам нужно изменить две строки кода в приложении /config/config.php

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

Ответ 17

Я думаю, что все ваши настройки хороши, но вы делаете, чтобы перепутать свой файл htaccess и добавьте htaccess в свой файл проекта.

project_folder- > Htaccess

и добавьте этот код в свой htaccess

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

Ответ 18

Для удаления index.php из url в Codeigniter требуется только три шага

1) Создайте файл .htacess параллельно держателю приложения и просто скопируйте следующий код:

RewriteEngine On
RewriteBase /CodeIgniter/
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

2) Измените $config ['index_page'] на blank в config.php в папке приложения, как показано ниже:

$config['index_page'] = '';

3) Включите "rewrite_module" для apache.

Перезагрузите ваш апач и его выполнение.

Подробности: http://sforsuresh.in/removing-index-php-from-url-of-codeigniter-in-wamp/

Ответ 19

Следуйте этим шагам, ваша проблема будет решена.

1- Загрузить файл .htaccess отсюда https://www.dropbox.com/s/tupcu1ctkb8pmmd/.htaccess?dl=0

2- Измените имя каталога CodeIgnitor в строке №5. например, имя моего каталога - abc (добавьте свое имя)

3- Сохраните файл .htaccess в главном каталоге (abc) вашей папки codeignitor

4- Измените uri_protocol с AUTO на PATH_INFO в файле Config.php

Примечание. Прежде всего, вы должны включить mod_rewrite из httpd.conf из apachi, удалив комментарии

Ответ 20

Используйте этот код. Измените вторую строку, так как у вас есть имя вашей папки. Там, где применяется приложение index.php и папки, системная папка. В основном проблемы возникают из-за второй линии. мы не настраиваем имя папки, где находится проект. Важная является 2-й строкой. Это просто удалить index.php.   RewriteEngine on   RewriteBase/project_folder_name   RewriteCond% {REQUEST_FILENAME}! -f   RewriteCond% {REQUEST_FILENAME}! -d   RewriteRule. * Index.php/$0 [PT, L]

#RewriteEngine on
#RewriteCond $1 !^(index\.php|images|robots\.txt)
#RewriteRule ^(.*)$ index.php/$1 [L]    

Перейдите в файл controller/config.php.

конфигурации [ 'index_url'] = '';

Ссылка для дальнейшего изучения.

https://ellislab.com/expressionengine/user-guide/urls/remove_index.php.html

https://ellislab.com/blog/entry/fully-removing-index.php-from-urls

Ответ 21

Кроме этих ответов, можно просто добавить index.php или отредактировать его (если он уже существует) - для безопасности вы хотите отключить index.php в любом случае, из списка файлов в вашем каталоге веб-сайта - затем измените контент в

<?php
   header('location:your_required_starting.php'); 
?>

Ответ 22

вы можете перейти в файл приложения \config\config.php и удалить index.php

 $config['index_page'] = 'index.php';   // delete index.php

Изменить на

 $config['index_page'] = '';

Ответ 23

Малая вещь: (Необязательно)

Попробуйте перезапустить свой Apache после обновления статуса перезаписывания в vhosts как Rewrite ON.

Одна из важных замечаний:

В файле Apache vhosts проверьте, есть ли у вас эта строка script AllowOverride NoneЕсли да, удалите/прокомментируйте эту строку.

Мой файл vhosts script: (До)

<VirtualHost *:80>
    DocumentRoot "/path/to/workspace"
    ServerName ciproject
    ErrorLog "/path/to/workspace/error.log"
    CustomLog "/path/to/workspace/access.log" common
    Directory   "/path/to/workspace">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory> 
</VirtualHost>

Мой файл vhosts script: (After)

<VirtualHost *:80>
    DocumentRoot "/path/to/workspace"
    ServerName ciproject
    ErrorLog "/path/to/workspace/error.log"
    CustomLog "/path/to/workspace/access.log" common
    Directory   "/path/to/workspace">
        Options Indexes FollowSymLinks
        #AllowOverride None
        Order allow,deny
        Allow from all
    </Directory> 
</VirtualHost>

Я столкнулся с той же проблемой, которая боролась около 1 дня, все было в порядке. Позже, методом проб и ошибок, нашел эту вещь. После этого моя работа была выполнена. Теперь URL-адрес не ищет index.php:)

Ответ 25

Если все вышеперечисленное решение не работает, то в папке вашего проекта их будет два файла index.html и index.php, переименуйте index.html в index_1.html и просмотрите ваш проект.

Ответ 26

Обратите внимание на разницу с добавленным "?" символ после ".php", особенно при работе с CodeIgniter:

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

против

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

Это зависит от нескольких других вещей.. если не работает, попробуйте другой вариант!

Ответ 27

Вы можете удалить index.php из URL, поместив некоторый код в .htaccess

Путь к файлу: root>.htacess

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


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

Надеюсь, это сработает.

Ответ 28

Вы можете исключить index.php из URL, создав файл .htaccess в базовом каталоге вашего проекта, в котором его содержимое выглядит как

ПереписатьEngine на
RewriteCond $ 1! ^ (Index.php | assets | images | js | css | uploads | favicon.png)
RewriteCond% (REQUEST_FILENAME)! -f
RewriteCond% (REQUEST_FILENAME)! -d
RewriteRule ^ (. *) $./Index.php/$1 [L]

сохраните этот файл и вы изменили в файле config.php правильно

$config['index_page'] = '';

Я хочу успешно бежать

Ответ 29

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

Это достигается в вашем конфигурационном файле apache, httpd.conf. Обратитесь к вашей конкретной документации по установке для местоположения или Google, например, "окна расположения файла конфигурации apache".

Чтобы включить mod_rewrite, необходимо удалить следующую строку, удалив хеш:

#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

в

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Во-вторых, в разделе, который выглядит так, находят поиск по шаблону "Элементы управления AllowOverride":

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   AllowOverride FileInfo AuthConfig Limit
#
AllowOverride none

измените none на All.

После этих изменений перезапустите apache.

Я обнаружил, что это, в дополнение к шагам в ответе Ананда Пандея, который подробно описывает использование RewriteBase для файлов, не относящихся к корню, достиг желаемого результата удаления index.php из URL.