Intereting Posts
Изменение метаданных facebook на основе URL / Anchor Получить данные json с помощью PHP Facebook Sharer загрузка ftp не работает Когда мне следует возвращать true / false AJAX, и когда я должен эхо «true» / «false», PHP добавляет 45 минут к времени с помощью Loop В PHP, как я могу добавить нумерованную цифровую строку и сохранить нулевое дополнение? Ведение позиции полосы прокрутки после перезагрузки страницы Отправка данных из одного php-файла в другой файл php Постоянно писать переменные в php-файл с php Как отправить запрос XML-мыла с помощью php curl Невозможно ограничить действия пользователя после успешного входа в codeigniter Необычная ошибка «Заголовки уже отправлены». Отсутствие пробелов или изменение заголовка Подходящая библиотека для записи PDF с использованием воспламенителя кода Конфигурации динамических маршрутов CakePHP, возможно ли это? или просто МЕЧТА?

Проблемы с кодировкой CodeIgniter и URL-адрес перезаписи

Я никогда раньше не использовал 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 шага.

  1. Внесите изменения в файл application/config.php

     $config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/Your Ci folder_name'; $config['index_page'] = ''; $config['uri_protocol'] = 'AUTO'; 
  2. Создайте файл .htaccess в корневом каталоге, используя приведенный ниже код.

     RewriteEngine on RewriteCond $1 !^(index\.php|resources|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA] 
  3. Включить механизм перезаписи (если он еще не включен)

    я. Сначала запустите его с помощью следующей команды:

     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:

  1. Нажмите на значок «Wamp» (обычно зеленый), перейдите в «Apache»> «Apache modules»> «rewrite_module». «Rewrite_module» должен быть отмечен галочкой! И тогда это путь!

Я использую что-то вроде этого – codeigniter-htaccess-file , для начала это хорошая статья.

  • оставить файл .htaccess в корневом каталоге CI
  • убедитесь, что mod_rewrite включен
  • проверить наличие опечаток (например, имя файла контроллера / имя класса)
  • в /application/config/config.php установить $config['index_page'] = "";
  • в /application/config/routes.php установите ваш контроллер по умолчанию $route['default_controller']="home";

Если вы выполняете чистую установку CI (2.1.3), на самом деле не так много, что может быть неправильным.

  • 2 файла конфигурации
  • контроллер
  • .htaccess
  • mod_rewrite

читать

  • Codeigniter .htaccess
  • переадресовать-индекс-PHP-в-CodeIgniter

Просто добавьте это в файл .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]