Убрать index.php из URL
- Автор mityok on марта 16th, 2008
По умолчанию CodeIgniter работает с указанием index.php в URL страницы. Это обусловлено тем, что файл index.php реализует задачу инициализации приложения и подключения основных библиотек ядра CodeIgniter. Часто возникает необходимость убрать упоминание index.php из URL, что легко реализуемо при помощи директив Rewrite в файле .htaccess и небольшой донастройки в файле application/config/config.php.
Правила перенаправления в файле .htaccess
Включаем модуль mod_rewrite, задаем для него перенаправление всех запросов для несуществующих ресурсов на index.php:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule>
Если ваше приложение на базе CodeIgniter расположено не в корневом каталоге домена, укажите в строке RewriteBase / тот каталог, где расположено ваше приложение. Строки
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
Строка RewriteRule ^(.*)$ index.php/$1 [L] указывает, что все запросы нужно направить на файл index.php.
Теперь вместо URL /index.php/welcome можно смело использовать /welcome.
Примечание, если после внесения в файл .htaccess описанного кода сервер на любой запрос отвечает Internal Server Error (код ошибки 500), значит вы скорее всего допустили опечатку при редактировании файла.
Настройка в application/config/config.php
Для того, чтобы вспомогательные функции URL CodeIgniter и системные функции генерировали адреса без index.php нужно в файле application/config/config.php строку $config['index_page'] = "index.php"; заменить на $config['index_page'] = "";. Кроме того, в этом же файле нужно будет выбрать подходящее для конфигурации вашего сервера значение параметра 'uri_protocol'. Чаще всего это
$config['uri_protocol'] = "PATH_INFO";

подскажите как
подскажите как убрать index.php?
Ситуация: Есть сайт структра выглядит как http://site/index.php?act=text&id='id'
при обновлении страницы скрипт должен вернуться на предыдущюю страницу , а получается:
http://site/text/edit/id.html - страница редактирования
http://site/index.php?/text/edit/id.html страница куда возвращает скрипт после обновления.
Решения: пробовал писать
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Работает но все ссылки тогда ведут на index.php и далее правила не работает
RewriteRule ^text/([-_A-Za-z0-9]+)\.html$ /?act&text&id=$1 [NC]
Вопрос: Как с помощью .htaccess убрать /index.php?/ из середины ссылки
А вот такая
А вот такая проблема, /10/20.html RewriteRule ^(.*)/(.*).html index.php?t=$1&z=$2 Все отлично в GET получаю нужные значение. Но вот покопавшись в логах нашел, что все файлы вложенные в index.php он ищет не по как в src написано, а 10/и путь файла, что за бред и как его убрать?
надо перенести
надо перенести .htaccess в корневую папку, положить рядом с index.php!!!!!!!!!!!!!!!!!!!!
в папке application
в папке application нет блин никакой папки config!!!!!!!!!!!!!!
на хостинге No
на хостинге No input file specified
куда копать ?
Копать в
Копать в сторону режима работы PHP. Если режим работы - FastCGI то нужны другие правила для mod_rewrite
ничего не
ничего не помогает... пойду убьюсь апстенку
Отлично!
Отлично! Работает! Спасибо! Не работает только перенаправление всех запросов для несуществующих ресурсов - хотя все зделал как описано.
При URI PROTOCOL - ORIG_PATH_INFO и QUERY_STRING переадресовывает все, вплоть и до существующих ресурсов, а при PATH_INFO и REQUEST_URI переадресации нет, только убралось index.php
Отлично!
Отлично! Работает! Спасибо! Не работает только перенаправление всех запросов для несуществующих ресурсов - хотя все зделал как описано.
При URI PROTOCOL - ORIG_PATH_INFO и QUERY_STRING переадресовывает все, вплоть и до существующих ресурсов, а при PATH_INFO и REQUEST_URI переадресации нет, только убралось index.php
Заработало!
Заработало! :)
После копирования из винды, ещё 5 минут назад всё отказывалось работать! Ещё раз скопировал содержимое .htaccess, перезагрузил систему и... О чудо! Всё заработало! ;)
на денвере
на денвере работает..а на хостинге не пошло..
я тупо сделал по хелпу самого фреймворка - на хостинге заработало!
а на денвере работает только этот вариант!
На денвере все
На денвере все работало хорошо на хостинге пишет
No input file specified.
подозреваю что это из-за .htaccess
Скорее из-за
Скорее из-за того, что на хостинге PHP работает в CGI/FastCGI режиме.
Поищите информацию по поводу RewriteRule для PHP-скриптов в CGI/FastCGI режиме. Не найдете - дайте подробную информацию по конфигурации, попробую помочь
Не помогло, я
Не помогло, я баранко
А вы все об
А вы все об одном, а мне вот любви хочется, большой и чистой!
спасибо, очень
спасибо, очень помогло!
Отправить комментарий