2013-05-15 2 views
12

Я знаю, что этот вопрос уже задан, я пробовал все, но все еще не смог удалить index.php из url. Вот мои деталиКак удалить index.php из codeigniter в UBUNTU

Ubuntu 12.10 
PHP : 5.4.6 
Mod_rewrite in on 
CI verson: 2.1 

.htacess выглядеть следующим образом:

RewriteEngine On 
RewriteBase /projectname 

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

Я также посмотреть на ссылке ниже, но не повезло .. Cannot remove index.php from url CI based site

How to remove "index.php" in codeigniter's path

Мои «/ etc/apache2/sites-available/default "выглядит следующим образом:

<VirtualHost *:80> 
    ServerAdmin [email protected] 

    DocumentRoot /var/www 
    <Directory /> 
     Options FollowSymLinks 
     AllowOverride None 
     </Directory> 
    <Directory /var/www/> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     allow from all 
    </Directory> 

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 
    <Directory "/usr/lib/cgi-bin"> 
     AllowOverride None 
     Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
     Order allow,deny 
     Allow from all 
    </Directory> 

    ErrorLog ${APACHE_LOG_DIR}/error.log 

    # Possible values include: debug, info, notice, warn, error, crit, 
    # alert, emerg. 
    LogLevel warn 

    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

Любая помощь приветствуется !!

+0

Ничего подозрительного в ваш журналы? –

+0

И каков ваш '$ config ['uri_protocol']' установлен? –

+0

И, наконец, какая ошибка вы получаете. Я подозреваю, что «Объект не найден»? –

ответ

5

В application/config/config.php изменений:

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

к:

$config['index_page'] = ''; 

это хорошая идея, чтобы сделать апачские перезагрузки каждый раз при смене Апачей конфигурационного файла.

sudo /etc/init.d/apache2 reload 

или:

sudo service apache2 reload 

или:

sudo /etc/init.d/httpd reload 

(или любой другой эквивалент команды для вашей платформы)

за то, что он стоит, вот мой. htaccess

RewriteEngine on 
RewriteBase/
RewriteCond $1 !^(index\.php|static|robots\.txt|favicon\.ico|uploads|googlexxxxxxxx\.html|mobile.html) 
RewriteRule ^(.*)$ index.php/$1 [L] 
+0

да, я тоже обновил это. –

+0

yes перезапустил мой apache количество времени. нет использования. –

+0

пробовал с вашим файлом htaccess без успеха. Я изменяю «RewriteBase/projectname», так как мой ci находится под этой папкой. –

0

мой .htaccess

RewriteEngine on 

RewriteCond $1 !^(index.php) 

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

Я пробовал это без успеха –

+0

изменить httpd.conf, AllowOverride None -> AllowOverride All – blu

+0

Похоже, что он уже есть: см. '' в коде афера. –

46

Шаг 1:

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

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    #RewriteBase/

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

Шаг 2:

Удалить индекс.PHP в CodeIgniter конфигурации

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

Шаг 3:

Разрешить преимущественную HTAccess в Apache Configuration (Command)

sudo nano /etc/apache2/apache2.conf 

и отредактировать файл & изменения в

AllowOverride All 

для папки www

Шаг 4:

Enabled апаша мод переписывают (команда)

sudo a2enmod rewrite 

Шаг 5:

Перезапустите Apache (команда)

sudo /etc/init.d/apache2 restart 
+1

Лучшее решение и работало как шарм. Большое спасибо – user2899728

+0

Наконец! рабочее решение. Setp '5' также может быть просто:' service apache2 restart' – FireBrand

+1

Да это решение работает для codeigniter 3.x + ubuntu 16.04 –

Смежные вопросы