CodeIgniter удаление index.php из url
Мои текущие URL-адреса выглядят следующим образом [mysite]index.php/[rest of the slug]
.
Я хочу вырезать index.php
из этих URL-адресов.
mod_rewrite
включен на моем сервере apache2. В config
, $config['index_page'] = '';
В моем корневом каталоге codeignitor .htaccess
содержится
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Но все же он не работает. Где я иду не так?
Ответы
Ответ 1
Попробуйте выполнить
Откройте config.php и выполните следующие замены
$config['index_page'] = "index.php"
к
$config['index_page'] = ""
В некоторых случаях установка по умолчанию для uri_protocol
не работает должным образом.
Просто замените
$config['uri_protocol'] ="AUTO"
по
$config['uri_protocol'] = "REQUEST_URI"
.htaccess
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Примечание:.htaccess код зависит от сервера хостинга. На каком-то сервере хостинга (например: Godaddy) нужно использовать дополнительный? в последней строке выше кода. Следующая строка будет заменена последней строкой в применимом случае:
// Replace last .htaccess line with this line
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
Ответ 2
Шаг: -1 Откройте папку "application/config" и откройте файл "config.php". найти и заменить приведенный ниже код в файле config.php.
//find the below code
$config['index_page'] = "index.php"
//replace with the below code
$config['index_page'] = ""
Шаг: -2 Перейдите в папку CodeIgniter и создайте .htaccess
Path:
Your_website_folder/
application/
assets/
system/
.htaccess <——— this file
index.php
Шаг: -3 Запишите ниже код в файле .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Шаг: -4 В некоторых случаях настройка по умолчанию для uri_protocol работает неправильно. Чтобы решить эту проблему, просто откройте файл "application/config/config.php", затем найдите и замените приведенный ниже код
//find the below code
$config['uri_protocol'] = "AUTO"
//replace with the below code
$config['uri_protocol'] = "REQUEST_URI"
Все, кроме Wamp Server, не работает, потому что rewrite_module по умолчанию отключен, поэтому нам нужно включить его. для этого сделайте следующее
- Щелкните левой кнопкой мыши значок WAMP
- Apache
- Модули Apache
- Левый клик rewrite_module
Ссылка
Ответ 3
Шаг 1:
Добавьте это в файл htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
Шаг 2:
Удалить index.php в configignign config
$config['base_url'] = '';
$config['index_page'] = '';
Шаг 3:
Разрешить переопределение htaccess в конфигурации Apache (команда)
sudo nano /etc/apache2/apache2.conf
и отредактируйте файл и измените его на
AllowOverride All
для папки www
Шаг 4:
Включено переписывание модема apache (команда)
sudo a2enmod rewrite
Шаг 5:
Перезапустить Apache (Command)
sudo /etc/init.d/apache2 restart
Ответ 4
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
использование
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$1 [PT,L]
если у вас есть url в этом порядке site.com/index.php/class/method/id
NB: удалить index.php в config.php должен быть config [index_page] = ""
NB: обратите внимание на разницу на последней строке вместо $0 используйте $1
Ответ 5
Шаг 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
Есть два шага:
1) Изменить config.php
$config['index_page'] = 'index.php';
To
$config['index_page'] = '’;
2) Создать/Редактировать файл .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Ответ 7
на вашем htaccess используйте это,
RewriteEngine On
RewriteBase /root_folder_name/
RewriteCond %{REQUEST_URI} ^system.*
RewriteCond $1 !^(index\.php|images|js|uploads|css|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Надеюсь, что это поможет.
Ответ 8
-
сделать .htaccess
файл и поместить этот код
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
-
изменения
$config['index_page'] = '';
удалить index.php
в файле config.php
- переписать с вашего сервера.
Ответ 9
попробуйте это. Он может помочь вам, поскольку он работает для меня.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
введите код в файл root htaccess и убедитесь, что у вас есть
$config['index_page'] = '';
в вашем файле конфигурации.
Пожалуйста, дайте мне знать, если у вас возникнут какие-либо проблемы.
Ответ 10
1. Создайте новый файл .htaccess в корневом каталоге.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>'
2. Перейдите в файл config.php и перейдите из $config['index_page'] = 'index.php'
в $config['index_page'] = ''
Ответ 11
+ Copy .htaccess from Application to Root folder
+ edit .htaccess and put
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /ci_test/
#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
Note: make sure your web server is enable for "rewrite_module"
+ Remove index.php from $config['index_page'] = 'index.php';
- edit config.php in application/config
- search for index.php
change it from $config['index_page'] = 'index.php'; to $config['index_page'] = '';
Пожалуйста, смотрите это видео для справки https://www.youtube.com/watch?v=HFG2nMDn35Q
Ответ 12
Прежде всего, вам нужно перезагрузить движок сервера apache. Эта ссылка поможет вам в этом
http://www.anmsaiful.net/blog/php/enable-apache-rewrite-module.html
RewriteEngine On
RewriteBase /your_folder_name/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
это будет ваш файл .htaccess.
теперь попробуйте. Эта настройка работает для меня.
Ответ 13
вы можете перейти в файл config\config.php и удалить значение index.php из этой переменной
$config['index_page'] = 'index.php'; // delete index.php
создайте файл .htaccess и вставьте в него этот код.
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
#Send request via index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
хороший шанс
Ответ 14
Removing index.php from url of codeigniter
Three steps are require to remove index.php from url in Codeigniter.
1)Create .htacess file in parallel to application holder and just copy past the following code:
RewriteEngine On
RewriteBase /CodeIgniter/
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
2) Change $config['index_page'] to blank in config.php in application folder as below:
$config['index_page'] = '';
3) Enable "rewrite_module" of apache.
Ответ 15
Как разработка, так и производство
# Development
RewriteEngine On
RewriteBase /your_local_folder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|scripts|styles|vendor|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
#Production PHP5 CGI mode
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|scripts|styles|vendor|robots\.txt)
RewriteRule ^(.*)$ index.php?/$1 [L]
Ответ 16
Ну, все эти ответы хороши, но для новичков (которые делают первый раз) это путают. Существуют другие файлы htaccess, которые находятся в контроллере, но мы должны отредактировать или добавить htaccess в основную папку проекта.
Это ваша папка-кодогенератор, где файл находится как приложение, система, активы, загрузки и т.д.
Your_project_folder/
application/
assets/
cgi-bin/
system/
.htaccess---->(Edit this file if not exist than create it)
index.php
Измените этот файл, как указано ниже:
<IfModule mod_rewrite.c>
RewriteEngine On
# !IMPORTANT! Set your RewriteBase here and don't forget trailing and leading
# slashes.
# If your page resides at http://www.example.com/mypage/test1
# then use RewriteBase /mypage/test1/
# Otherwise /
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: Anand Pandey
ErrorDocument 404 /index.php
</IfModule>
и да, конечно, вам нужно изменить две строки кода в приложении /config/config.php
//find the below code
$config['index_page'] = "index.php";
$config['uri_protocol'] ="AUTO"
//replace with the below code
$config['index_page'] = "";
$config['uri_protocol'] = "REQUEST_URI";
Ответ 17
Я думаю, что все ваши настройки хороши, но вы делаете, чтобы перепутать свой файл htaccess и добавьте htaccess в свой файл проекта.
project_folder- > Htaccess
и добавьте этот код в свой htaccess
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Ответ 18
Для удаления index.php из url в Codeigniter требуется только три шага
1) Создайте файл .htacess параллельно держателю приложения и просто скопируйте следующий код:
RewriteEngine On
RewriteBase /CodeIgniter/
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
2) Измените $config ['index_page'] на blank в config.php в папке приложения, как показано ниже:
$config['index_page'] = '';
3) Включите "rewrite_module" для apache.
Перезагрузите ваш апач и его выполнение.
Подробности: http://sforsuresh.in/removing-index-php-from-url-of-codeigniter-in-wamp/
Ответ 19
Следуйте этим шагам, ваша проблема будет решена.
1- Загрузить файл .htaccess отсюда https://www.dropbox.com/s/tupcu1ctkb8pmmd/.htaccess?dl=0
2- Измените имя каталога CodeIgnitor в строке №5.
например, имя моего каталога - abc (добавьте свое имя)
3- Сохраните файл .htaccess в главном каталоге (abc) вашей папки codeignitor
4- Измените uri_protocol с AUTO на PATH_INFO в файле Config.php
Примечание. Прежде всего, вы должны включить mod_rewrite из httpd.conf из apachi, удалив комментарии
Ответ 20
Используйте этот код. Измените вторую строку, так как у вас есть имя вашей папки. Там, где применяется приложение index.php и папки, системная папка. В основном проблемы возникают из-за второй линии. мы не настраиваем имя папки, где находится проект. Важная является 2-й строкой. Это просто удалить index.php. RewriteEngine on RewriteBase/project_folder_name RewriteCond% {REQUEST_FILENAME}! -f RewriteCond% {REQUEST_FILENAME}! -d RewriteRule. * Index.php/$0 [PT, L]
#RewriteEngine on
#RewriteCond $1 !^(index\.php|images|robots\.txt)
#RewriteRule ^(.*)$ index.php/$1 [L]
Перейдите в файл controller/config.php.
конфигурации [ 'index_url'] = '';
Ссылка для дальнейшего изучения.
https://ellislab.com/expressionengine/user-guide/urls/remove_index.php.html
https://ellislab.com/blog/entry/fully-removing-index.php-from-urls
Ответ 21
Кроме этих ответов, можно просто добавить index.php или отредактировать его (если он уже существует) - для безопасности вы хотите отключить index.php в любом случае, из списка файлов в вашем каталоге веб-сайта - затем измените контент в
<?php
header('location:your_required_starting.php');
?>
Ответ 22
вы можете перейти в файл приложения \config\config.php и удалить index.php
$config['index_page'] = 'index.php'; // delete index.php
Изменить на
$config['index_page'] = '';
Ответ 23
Малая вещь: (Необязательно)
Попробуйте перезапустить свой Apache после обновления статуса перезаписывания в vhosts как Rewrite ON
.
Одна из важных замечаний:
В файле Apache vhosts проверьте, есть ли у вас эта строка script AllowOverride None
Если да, удалите/прокомментируйте эту строку.
Мой файл vhosts script: (До)
<VirtualHost *:80>
DocumentRoot "/path/to/workspace"
ServerName ciproject
ErrorLog "/path/to/workspace/error.log"
CustomLog "/path/to/workspace/access.log" common
Directory "/path/to/workspace">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Мой файл vhosts script: (After)
<VirtualHost *:80>
DocumentRoot "/path/to/workspace"
ServerName ciproject
ErrorLog "/path/to/workspace/error.log"
CustomLog "/path/to/workspace/access.log" common
Directory "/path/to/workspace">
Options Indexes FollowSymLinks
#AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Я столкнулся с той же проблемой, которая боролась около 1 дня, все было в порядке. Позже, методом проб и ошибок, нашел эту вещь. После этого моя работа была выполнена.
Теперь URL-адрес не ищет index.php:)
Ответ 24
Добавьте эту строку кодов в файл .htaccess:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /myproject/index.php/$1 [L]
Где мой проект - ваше имя папки проекта.
Вы можете узнать больше о CodeIgniter или загрузить файл .htaccess здесь
Ответ 25
Если все вышеперечисленное решение не работает, то в папке вашего проекта их будет два файла index.html и index.php, переименуйте index.html в index_1.html и просмотрите ваш проект.
Ответ 26
Обратите внимание на разницу с добавленным "?" символ после ".php", особенно при работе с CodeIgniter:
RewriteRule ^ (. *) $ Index.php/$ 1 [L]
против
RewriteRule ^ (. *) $ Index.php?/$ 1 [L]
Это зависит от нескольких других вещей.. если не работает, попробуйте другой вариант!
Ответ 27
Вы можете удалить index.php из URL, поместив некоторый код в .htaccess
Путь к файлу: root>.htacess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
Надеюсь, это сработает.
Ответ 28
Вы можете исключить index.php из URL, создав файл .htaccess в базовом каталоге вашего проекта, в котором его содержимое выглядит как
ПереписатьEngine на
RewriteCond $ 1! ^ (Index.php | assets | images | js | css | uploads | favicon.png)
RewriteCond% (REQUEST_FILENAME)! -f
RewriteCond% (REQUEST_FILENAME)! -d
RewriteRule ^ (. *) $./Index.php/$1 [L]
сохраните этот файл и вы изменили в файле config.php правильно
$config['index_page'] = '';
Я хочу успешно бежать
Ответ 29
В дополнение к другим ответам и для всех, кто наткнулся на этот пост и обнаружил, что ответы по-прежнему не дают решения, вы должны убедиться, что mod_rewrite
включен, а AllowOverride controls
позволяют файлам .htaccess использовать директиву требуемого.
Это достигается в вашем конфигурационном файле apache, httpd.conf
. Обратитесь к вашей конкретной документации по установке для местоположения или Google, например, "окна расположения файла конфигурации apache".
Чтобы включить mod_rewrite, необходимо удалить следующую строку, удалив хеш:
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
в
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
Во-вторых, в разделе, который выглядит так, находят поиск по шаблону "Элементы управления AllowOverride":
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride none
измените none
на All
.
После этих изменений перезапустите apache.
Я обнаружил, что это, в дополнение к шагам в ответе Ананда Пандея, который подробно описывает использование RewriteBase для файлов, не относящихся к корню, достиг желаемого результата удаления index.php из URL.