Web

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

Как убрать «index.php», находящийся в каждом пути в codeigniter где-то в середине? Мне нужны чистые URL без index.php.

 

Ответ 1

Если вы используете Apache, поместите файл .htaccess в корневой веб-директории, содержащий следующее:

RewriteEngine on

RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)

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

 

Ответ 2

У меня возникли большие проблемы с удалением index.php. Как правило, приведенный ниже .htaccess был протестирован на нескольких серверах и в целом работает:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

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

 

<Files "index.php">

AcceptPathInfo On

</Files>  

 

Если у вас не работает это, то следующим шагом будет настройка вашего конфигурационного файла. Попробуйте другие протоколы URI, например:

| 'AUTO'                      по умолчанию

| 'PATH_INFO'             используется PATH_INFO

| 'QUERY_STRING'    используется QUERY_STRING

| 'REQUEST_URI'       используется REQUEST_URI

| 'ORIG_PATH_INFO'  используется ORIG_PATH_INFO

   $config['uri_protocol']  = 'ORIG_PATH_INFO';

 Если ваше решение все еще не работает, попробуйте изменить правило перезаписи, чтобы оно включало вашу подпапку. Это часто является проблемой, если вы используете временный URL на рабочем сервере и т. д:

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

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

$config['index_page'] = '';

 

Ответ 3

Все вышеперечисленные ответы не вполне решают проблему, и тогда я обнаружил, что не изменил AllowOverride None на AllowOverride All в файле виртуального хоста по адресу /etc/apache2/sites-available/default:

<VirtualHost *:80>

    ServerAdmin webmaster@localhost

    DocumentRoot /var/www

    <Directory />

            Options FollowSymLinks

            AllowOverride All    <---- замена None на All

    </Directory>

    <Directory /var/www >

            Options Indexes FollowSymLinks MultiViews

            AllowOverride All   <---  замена None на All

            Order allow,deny

            allow from all

    </Directory>

 

Ответ 4

Шаг 1 => Поместите файл .htaccess в корневую папку, где находятся папки application и system.

Шаг 2  => Если ваш веб-путь использует подпапки типа yourdomain.com/project/, тогда используйте следующий код в файле htaccess:

RewriteEngine on

RewriteBase    /project/

RewriteCond $1 !^(index\.php|images|robots\.txt)

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

Если ваш веб-путь использует корневую папку типа yourdomain.com, то используйте следующий код в файле htaccess:

RewriteEngine on

RewriteBase    /

RewriteCond $1 !^(index\.php|images|robots\.txt)

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

 

Ответ 5

Это .htaccess для одного из моих проектов CI:

RewriteEngine on

RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)

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

 Последняя строка должна дать то, что вам нужно, хотя вам может понадобиться или не понадобиться '/projectFolder', в зависимости от того, как настроена ваша структура папок.

 

Ответ 6

В качестве файла .htaccess хорошим вариантом будет использование файла, предоставляемого Kohana Framework:

# Включите переписывание URL

RewriteEngine On

 

# Каталог установки

RewriteBase /

 

# Защитите скрытые файлы от просмотра

<Files .*>

    Order Deny,Allow

    Deny From All

</Files>

 

# Защитите файлы приложений и системные файлы от просмотра

RewriteRule ^(?:application|system)\b.* index.php/$0 [L]

 

# Разрешить отображать все существующие файлы и каталоги напрямую

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

 

# Переписать все остальные URL на index.php/URL

RewriteRule .* index.php/$0 [PT]

 

Ответ 7

Шаг 1:

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

<IfModule mod_rewrite.c> 

RewriteEngine On 

#RewriteBase / 

 

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^ index.php [QSA,L] 

</IfModule>

 

Шаг 2:

Удалите index.php в конфигурации codeigniter:

$config['base_url']      = ''; 

$config['index_page'] = '';

 

Шаг 3:

Разрешите переопределение htaccess в конфигурации Apache (команда):

sudo nano /etc/apache2/apache2.conf 

и отредактируйте файл, добавив в него:

AllowOverride All

для папки www.

 

Шаг 4:

Включите apache mod rewrite (Команда):

sudo a2enmod rewrite

 

Шаг 5:

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

sudo /etc/init.d/apache2 restart

 

Схожие статьи

Web

Перечисления в PHP

Web

Ajax. Загрузка изображения

Web

Как зашифровать/расшифровать данные на php

Web

Как я могу узнать часовой пояс локального сервера?

×