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

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

Если вы используете 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/

У меня возникли некоторые проблемы с удалением 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'] = ''; 

Удачи!

Имейте файл 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'; 

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

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

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

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

 $config['index_page'] = ""; 

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

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

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

 <VirtualHost *:80> ServerAdmin webmaster@localhost 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> ... 

 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 работает для меня. Спасибо, ребята, за вашу поддержку.

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

 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” 
 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php/$0 [PT,L] 

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

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

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

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

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

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

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

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

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

 sudo a2enmod rewrite 

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

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

Finaly …

 sudo /etc/init.d/apache2 restart 

Мой .htaccess – это

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

Посмотрите в файле \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] 

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

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

 # 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, который просто работает.

Я тестировал это на 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

Если вы используете 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 

Существует два способа решения 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 включен. Если вы не включите его. (Лучший подход)!

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

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

Я пробовал много решений, но я пришел к такому:

 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 по мере необходимости.

Я использую эти строки в файле .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

Это поможет вам вставить этот код в папку приложения в файле .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> 

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

 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] 

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

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

 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.

Надеюсь, это сработает для вас. Благодарю.

Скопируйте следующий код в свой .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]