Удалить index.php из URL - Codeigniter 2 - PullRequest
29 голосов
/ 01 марта 2011

У меня проблемы с удалением 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

Спасибо.

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

Редактировать:

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

application

CI-2.0

index.php

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

Ответы [ 7 ]

23 голосов
/ 01 марта 2011

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

15 голосов
/ 12 марта 2011

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

  1. Создайте файл htaccess
  2. Установить $ config [‘index_page’] на пустое (config.php)
  3. string Set $ ​​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

3 голосов
/ 14 сентября 2013
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

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

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

2 голосов
/ 10 октября 2013

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

TYPE:

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>

А также включить переписывание модов на Apache:

/2847835/kak-vy-vklychaete-modrewrite-na-lyboi-os

Надеюсь, это поможет, Марио

2 голосов
/ 18 августа 2012

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

1 голос
/ 14 марта 2017

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) Отредактируйте файл application / config / config.php в папке приложения

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

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

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

1 голос
/ 05 мая 2016

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

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...