Мои текущие URL-адреса выглядят так: [mysite]index.php/[rest of the slug]
.
Я хочу удалить index.php
из этих URL-адресов.
mod_rewrite
включен на моем сервере apache2. В config
, $config['index_page'] = '';
Мой файл .htaccess
rootignign содержит,
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php/$0 [PT,L]
Но все же он не работает. Где я иду не так?
Попробуйте следующее
Откройте 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]
Шаг: -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 по умолчанию отключен, поэтому нам нужно включить его. для этого выполните следующие
Ссылка
Шаг 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 (команда)
sudo /etc/init.d/apache2 restart
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
Шаг 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]
Есть два шага:
1) Редактировать config.php
$config['index_page'] = 'index.php';
к
$config['index_page'] = '';
2) Создать / Редактировать файл .htaccess
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
на вашем 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]
Надеюсь это поможет.
сделать файл .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
+ 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
прежде всего, вам нужно перезагрузить движок сервера 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. теперь попробуйте. Эта настройка работает для меня.
попробуйте это. Это может помочь вам, поскольку он работает на меня.
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php/$0 [PT,L]
поместите код в файл root htaccess и убедитесь, что у вас есть
$config['index_page'] = '';
в вашем файле конфигурации.
Пожалуйста, дайте мне знать, если у вас возникнут какие-либо проблемы.
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.
Как разработка, так и производство
# 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]
вы можете перейти в файл 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>
хороший шанс
Я думаю, что все ваши настройки хороши, но вы делаете, чтобы скомпоновать свой файл 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]
Для удаления 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/
Следуйте этим шагам, и ваша проблема будет решена
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, удалив комментарии
Используйте этот код. Измените вторую строку, так как у вас есть имя вашей папки. Там, где применяется приложение index.php и папки, системная папка. В основном проблемы возникают из-за второй линии. мы не настраиваем имя папки, где находится проект. Важная является 2-й строкой. Это просто удалить index.php. RewriteEngine в 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
создайте новый файл .htaccess в корневом каталоге.
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule>
Помимо этих ответов, можно просто добавить index.php или отредактировать его (если он уже существует) – для безопасности вы хотите отключить index.php в любом случае, из списка файлов в вашем каталоге веб-сайта – затем измените содержимое на
<?php header('location:your_required_starting.php'); ?>
вы можете перейти в файл application \ config \ config.php и удалить index.php
$ config ['index_page'] = 'index.php'; // delete index.php
Изменить на
$ config ['index_page'] = '';
Добавьте эту строку кодов в файл .htaccess:
RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /myproject/index.php/$1 [L]
Где мой проект – имя вашего проекта.
Вы можете узнать больше о CodeIgniter или загрузить файл .htaccess здесь
Ну, все эти ответы хороши, но для новичков (которые делают первый раз) это путают. Существуют другие файлы htaccess, которые находятся в контроллере, но мы должны отредактировать или добавить htaccess в основную папку проекта.
Это ваша папка codeigniter, где файл находится как приложение, система, активы, загрузки и т. Д.
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";
Незначительная вещь: (Необязательно)
Попробуйте перезапустить свой Apache после обновления статуса перезаписывания в vhosts как
Rewrite ON
.
Одна из важных замечаний:
В файле Apache vhosts проверьте, есть ли у вас эта строка сценария
AllowOverride None
Если да, удалите / прокомментируйте эту строку.
Мой скрипт файла vhosts: (до)
<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: (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 🙂