Как удалить индекс".php " в пути codeigniter



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

918   25  

25 ответов:

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

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

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

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

у меня были большие проблемы с удалением индекса.РНР. Как правило .htaccess ниже был протестирован на нескольких серверах и в целом работает:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [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/ [L]  

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

$config['index_page'] = '';

удачи!

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

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

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

затем найдите следующую строку в вашем приложении / 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';

посмотреть в каталоге есть переменная с именем index_page

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

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

изменить на

$config['index_page'] = "";

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

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

все вышеперечисленные методы не для меня, а потом я обнаружил, что я не менял AllowOverride Нет до AllowOverride Все в моем файле виртуального хоста в /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/ [PT,L]

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

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

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

RewriteEngine on
RewriteBase    /project/
RewriteCond  !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/ [L]

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

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

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

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

будет .htaccess и обязательно отредактируйте свое приложение / конфигурацию.PHP переменная следующим образом:

заменить

$config['uri_protocol'] = “AUTO” 

С

$config['uri_protocol'] = “REQUEST_URI”
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/ [PT,L] 

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

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

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

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

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

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

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

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

sudo a2enmod rewrite  

и заменить AllowOverride None by AllowOverride All

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

наконец-то...

sudo /etc/init.d/apache2 restart  

мой .htaccess-это

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

посмотреть в каталоге есть переменная с именем index_page

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

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

изменить на

$config['index_page'] = "";

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

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

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

Как an .файл 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/ [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/ [PT]

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

есть два способа решить индекса.php в url пути для codeigniter

1: в config / config.РНР Изменить код :

$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/ [L]
</IfModule>

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

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

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

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/ [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 / Change AllowOverride Нет -> AllowOverride Все

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

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

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

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

DirectoryIndex index.php
RewriteEngine on

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

Это я удалю индекс.php из url-адреса по мере необходимости.

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

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

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

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

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

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [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/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [QSA,L]

надеюсь, что это помогает!

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

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

а также

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

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

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

копировать мимо следующего кода в вашем .htaccess

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

Comments

    Ничего не найдено.