Как удалить "index.php"
торчащий на каждом пути в кодеринговом центре где-то в центре? Мне нужны чистые index.php-fied URLs
отличные от index.php-fied URLs
?
Если вы используете Apache, поместите файл .htaccess в корневой веб-каталог, содержащий следующее:
RewriteEngine on RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L]
Другая хорошая версия находится здесь:
У меня возникли некоторые проблемы с удалением index.php. Как правило, ниже .htaccess был протестирован на нескольких серверах и, как правило, работает:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] <Files "index.php"> AcceptPathInfo On </Files>
Если вам не повезло с этим, то следующим шагом будет настройка вашего файла конфигурации. Попробуйте другие протоколы URI, например
| 'AUTO' Default - auto detects | 'PATH_INFO' Uses the PATH_INFO | 'QUERY_STRING' Uses the QUERY_STRING | 'REQUEST_URI' Uses the REQUEST_URI | 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO $config['uri_protocol'] = 'ORIG_PATH_INFO';
Если вам все еще не повезло, попробуйте изменить правило перезаписи, чтобы включить вашу подпапку. Это часто является проблемой, если вы используете временный URL-адрес на dev-сервере и т. Д.
RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/$1 [L]
Просто поиграйте с этими опциями, нужно работать. Также убедитесь, что ваш индексный файл установлен в:
$config['index_page'] = '';
Удачи!
Имейте файл the.htaccess в корневой каталог приложения вместе с файлом index.php. (Проверьте, правильно ли расширение htaccess, Bz htaccess.txt не работает для меня.)
И добавьте следующие правила в файл .htaccess,
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
Затем найдите следующую строку в файле application / config / config.php
$config['index_page'] = 'index.php';
Установите переменную пустую, как показано ниже.
$config['index_page'] = '';
Вот именно, это сработало для меня.
Если он не работает, попробуйте заменить следующую переменную этими параметрами («AUTO», «PATH_INFO», «QUERY_STRING», «REQUEST_URI» и «ORIG_PATH_INFO») один за другим
$config['uri_protocol'] = 'AUTO';
Посмотрите в файле system\application\config\config.php
, есть переменная с именем index_page
Это должно выглядеть так
$config['index_page'] = "index.php";
измените его на
$config['index_page'] = "";
Затем, как уже упоминалось, вам также необходимо добавить правило перезаписи в файл .htaccess
Примечание: в CodeIgniter v2 этот файл был перенесен из системной папки в application\config\config.php
Все вышеописанные методы сработали для меня, а затем я обнаружил, что я не изменяю AllowOverride None для AllowOverride All в моем файле виртуального хоста на / etc / apache2 / sites-available / default
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride All <---- replace None with All </Directory> <Directory /var/www > Options Indexes FollowSymLinks MultiViews AllowOverride All <--- replace None with All Order allow,deny allow from all </Directory> ...
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* /codeigniter/index.php/$0 [PT,L]
после изменения RewriteRule. * index.php / $ 0 [PT, L] с именем папки проекта «codeigniter» .it работает для меня. Спасибо, ребята, за вашу поддержку.
Просто подумал, что могу добавить
RewriteEngine on RewriteCond $1 !^(index\.php|resources|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA]
будет .htaccess и обязательно отредактируйте переменную application / config.php следующим образом:
замещать
$config['uri_protocol'] = “AUTO”
с
$config['uri_protocol'] = “REQUEST_URI”
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php/$0 [PT,L]
Это обязательно должно работать. Попробуйте
Шаг 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]
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php/$0 [PT,L]
Это – .htaccess для одного из моих проектов CI:
RewriteEngine on RewriteCond $1 !^(index\.php|images|css|js|robots\.txt) RewriteRule ^(.*)$ /projectFolder/index.php/$1 [L]
Последняя строка должна предоставить вам то, что вам нужно, хотя вам может и не понадобиться «/ projectFolder» в зависимости от того, как настроена структура вашей папки. Удачи!
Используйте mod_rewrite
как указано в этом уроке из вики CI.
Убедитесь, что вы включили mod_rewrite
(у меня не было).
Включить:
sudo a2enmod rewrite
Кроме того, замените AllowOverride None
на AllowOverride All
sudo gedit /etc/apache2/sites-available/default
Finaly …
sudo /etc/init.d/apache2 restart
Мой .htaccess – это
RewriteEngine on RewriteCond $1 !^(index\.php|[assets/css/js/img]|robots\.txt) RewriteRule ^(.*)$ index.php/$1 [L]
Посмотрите в файле \application\config\config.php
, есть переменная с именем index_page
Это должно выглядеть так
$config['index_page'] = "index.php";
измените его на
$config['index_page'] = "";
Затем, как уже упоминалось, вам также необходимо добавить правило перезаписи в файл .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 хороший вариант – использовать тот, который предоставляется платформой Kohana :
# Turn on URL rewriting RewriteEngine On # Installation directory RewriteBase / # Protect hidden files from being viewed <Files .*> Order Deny,Allow Deny From All </Files> # Protect application and system files from being viewed RewriteRule ^(?:application|system)\b.* index.php/$0 [L] # Allow any files or directories that exist to be displayed directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Rewrite all other URLs to index.php/URL RewriteRule .* index.php/$0 [PT]
Это хорошо продуманный .htaccess, который просто работает.
Я тестировал это на apache2 на многих разных хостингах, и он отлично работает.
использовать этот htaccess
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L]
убедитесь, что вы enabled mod_rewirte
с phpinfo();
затем сделайте это в config / config.php:
$config['index_url'] = ''; | | 'AUTO' Default - auto detects | 'PATH_INFO' Uses the PATH_INFO | 'QUERY_STRING' Uses the QUERY_STRING | 'REQUEST_URI' Uses the REQUEST_URI | 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO | */ $config['uri_protocol'] = 'AUTO';
если он еще не работает, попробуйте изменить $config['uri_protocol']='AUTO'
в один из перечисленных внутри файла application/config/config.php
в строке 40/54:
иногда я использовал: REQUEST_URI
вместо AUTO
или "QUERY_STRING"
для ходов goDaddy
Если вы используете linux и используете сервер apache2, нам может потребоваться переопределить файл apache2.conf, помимо изменений в файле .htaccess. Найдите файл конфигурации apache2 на /etc/apache2/apache2.conf .
Каталог поиска / var / www / Изменить AllowOverride None -> AllowOverride All
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory
Существует два способа решения index.php в URL-адресе для codeigniter
1: В config / config.php Код изменения:
$config['index_page'] = 'index.php';
в
$config['index_page'] = '';
2: Создайте .htacess в корневом пути, если не создан, Скопируйте следующий код:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule>
Сохраните его, а затем проверьте свою конфигурацию Apache. Rewrite_module ИЛИ mod_rewrite включен. Если вы не включите его. (Лучший подход)!
поместите файл .htaccess в корневой каталог
Что бы вы ни делали, если вы не выполнили это, это не сработает. Обычно его в папке «Система» он должен находиться в корне. Ура!
Я пробовал много решений, но я пришел к такому:
DirectoryIndex index.php RewriteEngine on RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots \.txt|favicon\.ico) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]
Это iwill удалит index.php из url по мере необходимости.
Я использую эти строки в файле .htaccess
; который я помещаю в корневую папку
RewriteEngine on RewriteRule ^(application|system|\.svn) index.php/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [QSA,L]
Затем я могу получить доступ к http://example.com/controller/function/parameter
вместо http://example.com/index.php/controller/function/parameter
Это поможет вам вставить этот код в папку приложения в файле .htacess
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] <Files "index.php"> AcceptPathInfo On </Files> <IfModule mod_php5.c> php_value short_open_tag 1 </IfModule>
Это сделало меня полной магией:
RewriteEngine on RewriteBase / # Hide the application and system directories by redirecting the request to index.php RewriteRule ^(application|system|\.svn) index.php/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [QSA,L]
Надеюсь, поможет!
Привет, Это помогло мне
RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
а также это
RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
где папка – это имя подпапки, если это приложение codeigniter размещено в качестве поддомена, например domainname / folder / index.php.
Надеюсь, это сработает для вас. Благодарю.
Скопируйте следующий код в свой .htaccess
RewriteEngine on Options -Indexes RewriteCond $1 !^(index\.php|assets|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA]