Подтвердить что ты не робот

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

Как удалить "index.php", торчащий в каждом пути в codeigniter где-то в центре? Я хочу чистый не index.php-fied URLs?

4b9b3361

Ответ 1

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

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

Другая хорошая версия находится здесь:

http://snipplr.com/view/5966/codeigniter-htaccess/

Ответ 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'            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']  = 'ORIG_PATH_INFO';

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

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

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

$config['index_page'] = '';

Удачи!

Ответ 3

Имейте файл the.htaccess в корневой каталог приложения вместе с файлом index.php. (Проверьте правильность расширения htaccess, Bz htaccess.txt не работает для меня.)

И добавьте следующие правила в файл .htaccess,

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

Затем найдите следующую строку в файле application/config/config.php

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

Задайте переменную пустую, как показано ниже.

$config['index_page'] = '';

Что это, это сработало для меня.

Если он не работает, попробуйте заменить следующую переменную этими параметрами ( "AUTO", "PATH_INFO", "QUERY_STRING", "REQUEST_URI" и "ORIG_PATH_INFO" ) один за другим

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

Ответ 4

Посмотрите в файле system\application\config\config.php, есть переменная с именем index_page

Это должно выглядеть так:

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

измените его на

$config['index_page'] = "";

Затем, как уже упоминалось, вам также необходимо добавить правило перезаписи в файл .htaccess

Примечание: в CodeIgniter v2 этот файл был перенесен из системной папки на application\config\config.php

Ответ 5

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

<VirtualHost *:80>
    ServerAdmin [email protected]

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

     ...

Ответ 6

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

после изменения RewriteRule. * index.php/$0 [PT, L] с именем папки проекта "codeigniter".it работает для меня. Спасибо, ребята, за вашу поддержку.

Ответ 7

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

Шаг 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]

Ответ 8

Просто подумал, что могу добавить

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

будет .htaccess и не забудьте изменить переменную application/config.php следующим образом:

заменить

$config['uri_protocol'] = "AUTO" 

с

$config['uri_protocol'] = "REQUEST_URI"

Ответ 9

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

Это обязательно должно работать. Попробуйте

Ответ 10

Убедитесь, что вы включили mod_rewrite (у меня его не было).
Чтобы включить:

sudo a2enmod rewrite  

Кроме того, замените AllowOverride None на AllowOverride All

sudo gedit /etc/apache2/sites-available/default  

Окончательный...

sudo /etc/init.d/apache2 restart  

Мой .htaccess

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

Ответ 11

Идеальное решение [проверено как на локальном хосте, так и на реальном домене]

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

Ответ 12

Используйте mod_rewrite, как указано в этот учебник из вики CI.

Ответ 13

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

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

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

Ответ 14

В качестве файла .htaccess следует использовать тот, который предоставляется Kohana Framework:

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|system)\b.* index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

Это хорошо продуманный .htaccess, который просто работает.

Ответ 15

Существует два способа решения index.php в URL-адресе для codeigniter

1: В config/config.php Изменить код:

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

к

$config['index_page'] = '';

2: Создайте .htacess в корневом пути, если не создан, Скопируйте следующий код: -

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

Сохраните его, а затем проверьте свою конфигурацию Apache. rewrite_module ИЛИ mod_rewrite включен. Если вы не включите его. (Лучший подход)!

Ответ 16

Я тестировал это на apache2 на многих разных хостингах, и он отлично работает.

используйте этот htaccess

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

убедитесь, что у вас есть enabled mod_rewirte с phpinfo();

тогда сделайте это в config/config.php:

$config['index_url']    = '';
|
| '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

Ответ 17

Посмотрите в файле \application\config\config.php, есть переменная с именем index_page

Это должно выглядеть так:

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

измените его на

$config['index_page'] = "";

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

RewriteEngine on
RewriteCond $1 !^(index\\.php|resources|robots\\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

Он работает для меня, надеюсь, вы тоже.

Ответ 18

Если вы используете linux и используете сервер apache2, нам может потребоваться переопределить файл apache2.conf, кроме изменений в файле .htaccess. Найдите файл конфигурации apache2 в /etc/apache2/apache2.conf.

Каталог поиска/var/www/Изменить AllowOverride None → AllowOverride All

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory

Ответ 19

поместите файл .htaccess в корневой веб-каталог

Что бы вы ни делали, если вы не выполнили это, это не сработает. Обычно его в папке "Система" он должен находиться в корне. Ура!

Ответ 20

Я пробовал много решений, но я придумал следующее:

DirectoryIndex index.php
RewriteEngine on

RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots  \.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]

Это iwill удалит index.php из URL-адреса, если требуется.

Ответ 21

Я использую эти строки в файле .htaccess; который я помещаю в корневую папку

RewriteEngine on
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]

Затем я могу получить доступ к http://example.com/controller/function/parameter

вместо http://example.com/index.php/controller/function/parameter

Ответ 22

Это поможет вам вставьте этот код в папку приложения в .htacess файле

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

<Files "index.php">
AcceptPathInfo On
</Files>
<IfModule mod_php5.c>
  php_value short_open_tag 1
</IfModule>

Ответ 23

Это сделало меня полной магией:

RewriteEngine on
RewriteBase /
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]

Надеюсь, что это поможет!

Ответ 24

Привет, Это помогло мне

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

а также этот

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

где папка - это имя подпапки, если это приложение codeigniter размещено как поддомен например, domainname/folder/index.php.

Надеюсь, что это сработает для вас. Спасибо.

Ответ 25

Скопируйте следующий код в свой .htaccess

RewriteEngine on
Options -Indexes
RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

Ответ 26

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /Foldername of your ci/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

Ответ 27

Шаг 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 (команда)

sudo a2enmod переписать

Шаг 5:

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

sudo /etc/init.d/apache2 restart