Я никогда раньше не использовал CodeIgniter, не говоря уже о ANY php framework, и я думал, что попробую. Все идет хорошо, но я не могу удалить index.php из URL-адреса и по-прежнему получать доступ к моим страницам.
Я никогда не использовал структуру MVC, поэтому я учусь, когда я иду, поэтому простите меня, если я сделаю это неправильно.
Я пытаюсь получить доступ к представлению, которое я создал, называется «about_page.php», просто введя в localhost / ci / about, но в настоящее время я могу получить к нему доступ только с помощью localhost / ci / index.php / about
Контроллер для страницы: /application/controllers/about.php
Модель для страницы: /application/models/about_model.php
Просмотр страницы: /application/views/about_page.php
Я искал решение этой проблемы, но не смог ее найти. Здесь я уже искал:
CodeIgniter – удаление index.php
Codeigniter – как удалить index.php из url?
http://www.farinspace.com/codeigniter-htaccess-file/
CodeIgniter поставляется с файлом .htaccess в папке «приложение», которая содержит только « Allow Deny From All
. Поэтому я создал новый файл .htaccess в корневом каталоге http://localhost/ci/.htaccess
и добавил к нему этот код:
RewriteEngine On RewriteBase /ci RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
Когда файл .htaccess находится в корневом каталоге, я получаю 500 Internal Server Error. Когда я копирую один и тот же файл в папку приложений, ошибка 500 исчезает, но я до сих пор не могу получить доступ к странице about с помощью localhost / ci / about
Я уже изменил $config['index_page'] = 'index.php';
to $config['index_page'] = '';
И я попытался изменить $config['uri_protocol'] = 'AUTO';
to $config['uri_protocol'] = 'REQUEST_URI';
но я все еще получаю внутреннюю ошибку сервера.
Я зашел в файл httpd.conf и раскомментировал модуль mod_rewrite.so, поэтому я знаю, что mod_rewrite активен.
У кого-нибудь есть идеи, почему это не работает или как я могу получить эту работу? Я знаю, что на StackOverflow много вопросов по этой теме, но я не мог найти ответ на мой вопрос.
Правильно ли я это делаю? Должен ли я даже получить доступ к странице about, посетив localhost / ci / about или мне нужно создать каталог «about» в каталоге «application»?
Для удаления index.php
существует 3 шага.
Внесите изменения в файл application/config.php
$config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/Your Ci folder_name'; $config['index_page'] = ''; $config['uri_protocol'] = 'AUTO';
Создайте файл .htaccess
в корневом каталоге, используя приведенный ниже код.
RewriteEngine on RewriteCond $1 !^(index\.php|resources|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Включить механизм перезаписи (если он еще не включен)
я. Сначала запустите его с помощью следующей команды:
a2enmod rewrite
II. Отредактируйте файл /etc/apache2/sites-enabled/000-default
Измените все AllowOverride None
на AllowOverride All
.
Примечание. В последней версии вам необходимо изменить файл /etc/apache2/apache2.conf
III. Перезагрузите сервер следующей командой:
sudo /etc/init.d/apache2 restart
Ваш .htaccess
немного выключен. Посмотрите на мое:
RewriteEngine On RewriteBase /codeigniter RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond $1 !^(index\.php|images|robots\.txt|css|docs|js|system) RewriteRule ^(.*)$ /codeigniter/index.php?/$1 [L]
Обратите внимание на «codeigniter» в двух местах.
после этого в вашем конфиге:
base_url = "http://localhost/codeigniter" index = ""
Измените codeigniter на "ci"
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /dmizone_bkp RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond $1 !^(index\.php|images|robots\.txt|css|docs|js|system) RewriteRule ^(.*)$ /dmizone_bkp/index.php?/$1 [L] </IfModule>
Это работает для меня
Переместите файл .htaccess в корневую папку (найдите в папке приложения в моем случае)
RewriteEngine on RewriteBase /yourProjectFolder RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php/$0 [PT,L]
Mine config.php выглядит так (application / config / config.php )
$config['base_url'] = ""; $config['index_page'] = "index.php"; $config['uri_protocol'] = "AUTO";
Дайте мне знать, если он будет работать для вас, ребята! Приветствия!
если не работает
$config['uri_protocol'] = 'AUTO';
измените его на
$config['uri_protocol'] = 'PATH_INFO';
если он не работает, измените его на
$config['uri_protocol'] = 'QUERY_STRING';
если использовать это
$config['uri_protocol'] = 'ORIG_PATH_INFO';
с перенаправлением или заголовком, чтобы URL-адрес не был в htaccess, не будет работать, вы должны добавить URL-адрес в htaccess для работы
Для пользователей wamp-сервера следуйте первым двум шагам решения @Raul Chipad:
Я использую что-то вроде этого – codeigniter-htaccess-file , для начала это хорошая статья.
$config['index_page'] = "";
$route['default_controller']="home";
Если вы выполняете чистую установку CI (2.1.3), на самом деле не так много, что может быть неправильным.
читать
Просто добавьте это в файл .htaccess:
DirectoryIndex index.php RewriteEngine on RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ ./index.php?/$1 [L,QSA]