Удалить index.php Из URL - Codeigniter 2

У меня возникли проблемы с удалением index.php из моих URL-адресов в Codeigniter. Я сделал несколько сайтов с Codeigniter 1.7, а код .htaccess, который я использовал, не работает в 2.

Я пробовал использовать

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

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

и

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt|css)
RewriteRule ^(.*)$ ./index.php/$1 [L]

</IfModule>

Я также пробовал это без RewriteBase/in.

Я изменил $config ['uri_protocol'] на REQUEST_URI и QUERY_STRING и ничего.

Я установил $config ['index_page'] = "";

Структура файла - 192.168.0.130/(site)/, поэтому он должен возвращаться к корню сервера и не может найти файл index.php.

Все контроллеры, которые я создал, можно получить, поставив 192.168.0.130/(site)/index.php/testcontroller

Спасибо.

Извините, если это было задано раньше - я посмотрел и попробовал, что я мог видеть.

Edit:

Я также должен добавить, что я изменил папки по умолчанию

Приложение

CI-2,0

index.php

и изменили пути в index.php, чтобы быть правильными.

+27
источник поделиться
7 ответов

Попробуйте опубликовать первый блок кода, но вместо /index.php попробуйте использовать /(site)/index.php(obv replace (site) с именем вашей папки сайта).

+22
источник

Это сработало для меня:

  • Создайте файл htaccess
  • Задайте $config ['index_page] пустой (config.php)
  • string Установить $config ['uri_protocol'] = 'REQUEST_URI'; (Config.php)

Это мой файл htaccess:

Options -Indexes
Options +FollowSymLinks

RewriteEngine On
RewriteBase /

#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,

RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ index.php?/$1 [L]

#When your application folder isn't in the system folder

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]

# 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

Источник:

http://taggedzi.com/articles/display/codeigniter-2-htaccess-and-friendly-urls

+14
источник
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

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

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

+3
источник

После выполнения всех инструкций от других людей и из CodeIgnitor URL documnetation не забывайте перезапустить сервер. Я просто забыл сделать это и продолжал пробовать все другие решения.

+2
источник

Я был на этом в течение 2 дней.. Пробовал все возможное. Я только что сказал, что вам нужно следующее:

ТИП:

sudo nano /etc/apache2/sites-available/default

И измените AllowOverride None на AllowOverride All - Это даст вам доступ к вашим файлам .htaccess

<Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
            # Uncomment this directive is you want to see apache2's
            # default start page (in /apache2-default) when you go to /
            #RedirectMatch ^/$ /apache2-default/
</Directory>

А также включите функцию mod rewrite на Apache:

http://stackoverflow.com/questions/3131236/how-do-you-enable-mod-rewrite

Надеюсь, это поможет, Mário

+1
источник

Вам просто нужно добавить код ниже в .htacess.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
+1
источник

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/config.php в папке приложения

$config['base_url'] = 'http://localhost/projectName';

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

Надеюсь, что это сработает для вас.

+1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос