Как удалить index.php из codeigniter в UBUNTU

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

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]  

Я также смотрю ссылку ниже, но не повезло.. Невозможно удалить index.php с сайта на основе CI на основе URL

Как удалить "index.php" в пути codeigniter

Мой "/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>

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

Ответ 1

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

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

в

$config['index_page'] = '';

рекомендуется обновлять apache каждый раз при изменении конфигурационного файла apache.

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]

Ответ 2

Шаг 1:

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

<IfModule mod_rewrite.c>
  RewriteEngine On
  #RewriteBase /

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

Шаг 2:

Удалить index.php в configignign config

$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 (Command)

sudo /etc/init.d/apache2 restart

Ответ 3

my.htaccess

RewriteEngine on

RewriteCond $1 !^(index.php)

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