it-swarm.com.ru

CodeIgniter удаляет index.php из URL

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

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

Мой файл .htaccess в корне codeignitor содержит: 

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

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

126
Nihar Sarangi

Попробуйте следующее

Откройте 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] 
205
Rahul Tailwal

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

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

Step: -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>

Step: -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 это не работает, потому что rewrite_module по умолчанию отключен, поэтому нам нужно включить его. для этого сделайте следующее

  1. Щелкните левой кнопкой мыши значок WAMP
  2. Апаш
  3. Модули Apache
  4. Щелкните левой кнопкой мыши rewrite_module

Оригинальная документация

Пример ссылки

108
Salim

Шаг 1 :

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

<IfModule mod_rewrite.c>
  RewriteEngine On
  #RewriteBase /

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

Шаг 2 :

Удалите index.php в конфиге codeigniter

$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 (команда)

Sudo /etc/init.d/Apache2 restart
31
Dino

Шаг 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]
15
vinod
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

15
user3464848

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

1) Редактировать config.php

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

К 

$config['index_page'] = '’;

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

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

на вашем 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]

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

10
yuvaraj bathrabagu

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'] = ''

5
Manish Sharma
  1. сделайте .htaccess файл и поместите этот код

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

    $config['index_page'] = ''; 
    

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

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

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

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

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

$config['index_page'] = '';

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

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

4
ABorty
+ 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

4
KH SolveCode

прежде всего, вам нужно на сервере 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. Теперь попробуйте. Этот параметр работает для меня.

3
vaibhav kulkarni

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

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

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>

и да, конечно, вам нужно изменить две строки кода в application/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";
3
Anand Pandey
  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.
2
Pritam Chaudhari

вы можете перейти в config\config.php file и удалить значение 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>

хороший шанс

2
abbas hussen

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

    # 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]
2
cgwCode

Для удаления 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'] на пустое в config.php в папке приложения, как показано ниже:

$config['index_page'] = '';

3) Включить «rewrite_module» Apache.

Перезагрузите ваш Apache и все готово.

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

1
Suresh Kamrushi

Я думаю, что все ваши настройки хороши, но вы делаете, чтобы неправильно разместить свой файл 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]
1
Yaseen Ahmad

Вы можете исключить 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'] = '';

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

0
Rabab Sh

Добавьте эти строки кодов в ваш файл .htaccess:

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

Где «мой проект - это имя папки вашего проекта.

Вы можете узнать больше о CodeIgniter или скачать файл .htaccess здесь

0
Infolet.org

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

 $ config ['index_page'] = 'index.php'; // удаляем index.php 

Правка на

 $ config ['index_page'] = ''; 

0
Rafiqul Islam

Вы можете удалить 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]

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

0
Rokan Nashp

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

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, удалив комментарии

0
Salman Khan

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

0
Mohsin Shoukat

Решил это за 2 шага.

  1. Обновите 2 параметра в файле конфигурации application/config/config.php
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
  1. Обновите файл .htaccess в корневой папке
<IfModule mod_rewrite.c>
    RewriteEngine On
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
0
John Pluto Solutions

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

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

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

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

vs.

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

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

0
eyal_katz

попробуйте этот RewriteEngine On

        # Removes index.php from ExpressionEngine URLs
        RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
0
Kashif

Используйте этот код. Измените вторую строку, как у вас есть имя папки. Где файл index.php и папки приложения, лежат системные папки. В основном проблемы возникают из-за второй линии. мы не настраиваем имя папки, в которой находится проект. Важна вторая строка. Это просто удалить index.php. ПереписатьEngine на 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

0
Hafiz Shehbaz Ali

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

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

Одна важная вещь, на которую стоит обратить внимание:

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

Скрипт моего файла vhosts: (до)

<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: (После)

<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 :)

0
Lalith Kumar