it-swarm.com.ru

Как удалить "index.php" в пути кодового указателя

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

113
OrangeRind

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

88
Sean Vieira

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

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

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

$config['index_page'] = '';

Удачи!

60
jimbo2087

Разместите файл .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';
30
Shaolin

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

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

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

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

$config['index_page'] = "";

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

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

21
Re0sless

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

<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>

     ...

9
waqas

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

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

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

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

5
Ramaraju.d

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

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”
5
Jefkine Kafuna

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

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

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

3
Ben S

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

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

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

3
Matthew Rapati

Убедитесь, что вы включили 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]  
3
miguelitomp

Есть два способа решить 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 OR mod_rewrite включен. Если нет, пожалуйста, включите . (Лучший подход)!

3
Devraj Gupta

В качестве файла .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, который просто работает.

3
this.lau_

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

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

2
glider

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

2
itsme

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

Поиск в каталоге/var/www/Change AllowOverride Нет -> AllowOverride All

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

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

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]

Это приведет к удалению index.php из URL по мере необходимости.

1
codegeek

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

1
Scorpion

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

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

1
foxybagga

Этот сделал мне полную магию:

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]

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

0
bmnepali

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

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>
0
Majid
<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>
0
mohd jagir

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

Привет это мне сработало

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 размещено как поддомен Например, имя домена/папка/index.php.

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

0
lightup