2012-03-12 4 views
9

Я пробовал все в google, связанном с удалением index.php из URL-адреса в codeigniter, но у меня не было никакого решения Я использую codeigniter version 2.1.0 Как я могу удалить индексную форму my URL?Удалить index.php в codeigniter 2.1.0

Благодаря

+1

Какие ошибки вы получаете? Вы используете apache? У вас включен mod_rewrite? – applechief

+0

Вы прочитали основную документацию? –

+0

Да, я прочитал всю документацию i m, используя apache, и я также включил mod_rewrite –

ответ

21

В application/config.php убедитесь, что

$config['index_page'] = ""; 

Затем установите это как файл .htaccess:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    #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> 

Вы все готово!

+1

Есть разные файлы htaccess, в которых один должен вставить этот код? –

+1

теперь перенаправляет меня на мой localhost –

+0

Измените RewriteBase на любой путь, на который настроен ваш проект. Кроме того, этот файл .htaccess должен находиться в корневой папке проекта, где находятся папки «приложение» и «система». –

1

Вы пробовали использовать пример, приведенный в руководстве пользователя CodeIgniter?

По умолчанию файл index.php будет включен в ваших URL-адресов:

example.com/index.php/news/article/my_article 

Вы можете легко удалить этот файл, используя .htaccess файл с некоторыми простыми правилами. Вот пример такого файла, используя «негативный» метод, в котором все перенаправлены кроме указанных элементов:

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

В приведенном выше примере, любой запрос HTTP, кроме тех, для index.php, изображения и robots.txt рассматривается как запрос для вашего файла index.php .

http://codeigniter.com/user_guide/general/urls.html

+1

Да, я уже пробовал, что не работал для меня –

0

В дополнение к файлу .htaccess, предоставленному Робертом Стэнли (см. Его ответ), перейдите к application/config/config.php, ищите $config['index_page'] = "index.php"; и замените его на $config['index_page'] = "";

+0

Я также сделал это изменение –

+0

, если мой проект находится в C: // wamp/www/myproject, какой путь я должен писать для RewriteBase? –

+0

В вашей корневой папке (sams для index.php), что означает: C: // wamp/www/myproject – htaidirt

5

Для меня решение Рафаэль Caixetas не работал, но это сделал:

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

Сначала не работал для меня. Затем я понял, что вам нужно включить 'mod_rewrite' в Apaches' httpd.conf', чтобы он работал. Хорошо работает сейчас, спасибо :) –

1

я испытал это на apache2 на многих различных хостинг и он прекрасно работает.

использование этого Htaccess

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

быть уверены, что у вас есть enabled mod_rewirte с phpinfo();

затем сделать это в конфигурации/config.php:

$config['index_page'] = ''; 
| 
| 'AUTO'   Default - auto detects 
| 'PATH_INFO'  Uses the PATH_INFO 
| 'QUERY_STRING' Uses the QUERY_STRING 
| 'REQUEST_URI'  Uses the REQUEST_URI 
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO 
| 
*/ 
$config['uri_protocol'] = 'AUTO'; 

, если он еще не работает , попробуйте изменить $config['uri_protocol']='AUTO' на один из перечисленных в файле application/config/config.php в строке 40/54:

иногда я использовал: REQUEST_URI вместо AUTO или "QUERY_STRING" для GoDaddy хостингов

0

Это то, что я использую и работает. Используйте этот код в своем.htaccess

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

Просто убедитесь, что .htaccess находится в вашей корневой папке. (например: XAMPP/HTDOCS)

Затем в config.php (приложение \ Config) заменяющие config['index_page']='index.php' к config['index_page']=''.

1

проверить файл httpd.conf

изменение

AllowOverride None 

в

AllowOverride All 
+0

Это сработало для меня. Я на CentOS 7. Я редактировал файл «/etc/httpd/conf/httpd.conf» в разделе «" – IvanJijon

0

Не забудьте изменить де конфигурационный файл!

применение/config.php

$config['index_page'] = ''; 

.htaccess

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

Вам просто нужно создать файл .htaccess в папке проекта и написать: RewriteEngine На

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

# Rewrite all other URLs to index.php/URL 
RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 

</IfModule> 
<IfModule !mod_rewrite.c> 
ErrorDocument 404 index.php 
</IfModule> 

And You don't need to define in base_url in config file: 
$config['base_url'] = '';// blank it. 

I hope it will work perfectly ...