25 ответов:
Если вы используете Apache place a .htaccess файл в корневом веб-каталоге, содержащий следующее:
RewriteEngine on RewriteCond !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt) RewriteRule ^(.*)$ /index.php/ [L]еще одна хорошая версия находится здесь:
у меня были большие проблемы с удалением индекса.РНР. Как правило .htaccess ниже был протестирован на нескольких серверах и в целом работает:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/ [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-адрес на сервере разработки и т. д.:
RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/ [L]просто поиграйте с этими опциями, нужно работать. Кроме того, убедитесь, что ваш индексный файл расположен на:
$config['index_page'] = '';удачи!
есть.файл htaccess в корневом каталоге приложения, вместе с индексом.PHP-файл. (Проверьте правильность расширения htaccess, Bz htaccess.txt не работал для меня.)
и добавить следующие правила .файл htaccess,
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/ [L]затем найдите следующую строку в вашем приложении / 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';
посмотреть в каталоге есть переменная с именем
index_pageэто должно выглядеть так
$config['index_page'] = "index.php";изменить на
$config['index_page'] = "";затем, как уже упоминалось, вам также нужно добавить правило перезаписи в
.htaccessfileПримечание: В CodeIgniter v2 этот файл был перемещен из системной папки в
application\config\config.php
все вышеперечисленные методы не для меня, а потом я обнаружил, что я не менял AllowOverride Нет до AllowOverride Все в моем файле виртуального хоста в /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/ [PT,L]после изменения RewriteRule .* индекс.php / $0 [PT,L] с именем папки проекта "codeigniter".это работает на меня. Спасибо ребятам за Вашу поддержку.
Шаг 1 = > Поместите ваш .файл htaccess в корневой папке, где существуют приложения и системные папки.
Шаг 2 => Если ваш веб-путь с помощью подпапки, как - yourdomain.com/project/ - затем используйте следующий код в файле htaccess
RewriteEngine on RewriteBase /project/ RewriteCond !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /project/index.php/ [L]Если ваш веб-путь с помощью корневой папки, как - yourdomain.com -тогда используйте следующий код в файле htaccess
RewriteEngine on RewriteBase / RewriteCond !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/ [L]
просто думал, что я мог бы добавить
RewriteEngine on RewriteCond !^(index\.php|resources|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/ [L,QSA]будет .htaccess и обязательно отредактируйте свое приложение / конфигурацию.PHP переменная следующим образом:
заменить
$config['uri_protocol'] = “AUTO”С
$config['uri_protocol'] = “REQUEST_URI”
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php/ [PT,L]Это должно работать.. попробуйте
идеальное решение [ протестировано как на локальном хосте, так и на реальном домене ]
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php/ [PT,L]
Это .htaccess для одного из моих проектов CI:
RewriteEngine on RewriteCond !^(index\.php|images|css|js|robots\.txt) RewriteRule ^(.*)$ /projectFolder/index.php/ [L]последняя строка должна дать вам то, что вам нужно, хотя вам может понадобиться или не понадобиться "/projectFolder " в зависимости от того, как настроена ваша структура папок. Удачи вам!
использовать
mod_rewrite, Как указано в в этом уроке из CI wiki.
убедитесь, что вы включили
mod_rewrite(у меня не было).
Чтобы включить:sudo a2enmod rewriteи заменить
AllowOverride NonebyAllowOverride Allsudo gedit /etc/apache2/sites-available/defaultнаконец-то...
sudo /etc/init.d/apache2 restartмой .htaccess-это
RewriteEngine on RewriteCond !^(index\.php|[assets/css/js/img]|robots\.txt) RewriteRule ^(.*)$ index.php/ [L]
посмотреть в каталоге есть переменная с именем
index_pageэто должно выглядеть так
$config['index_page'] = "index.php";изменить на
$config['index_page'] = "";затем, как уже упоминалось, вам также нужно добавить правило перезаписи в такой:
RewriteEngine on RewriteCond !^(index\.php|resources|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/ [L,QSA]это работает для меня, надеюсь вы.
Как an .файл htaccess, хороший вариант-использовать тот, который предоставляется Kohana Framework:
# 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/ [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/ [PT]это хорошо продумано .htaccess, который просто работает.
есть два способа решить индекса.php в url пути для codeigniter
1: в config / config.РНР Изменить код :
$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/ [L] </IfModule>сохраните его, а затем проверьте, включена ли ваша конфигурация Apache rewrite_module или mod_rewrite.Если нет, то, пожалуйста, включен. (Лучший Подход)!
Я тестировал это на apache2 на многих разных хостингах, и он отлично работает.
используйте этот htaccess
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/ [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 / Change AllowOverride Нет -> AllowOverride Все
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory
место .файл htaccess в корневом каталоге
Что бы вы ни делали-если вышеизложенное не выполняется-это не сработает. Обычно его в системной папке, он должен быть в корне. Ура!
Я пробовал много решений, но я придумал это:
DirectoryIndex index.php RewriteEngine on RewriteCond !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots \.txt|favicon\.ico) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ ./index.php? [L,QSA]Это я удалю индекс.php из url-адреса по мере необходимости.
Я использую эти строки в
.htaccessфайл; который я помещаю в корневую папкуRewriteEngine on RewriteRule ^(application|system|\.svn) index.php/ [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/ [QSA,L]тогда я могу получить доступ http://example.com/controller/function/parameter
вместо http://example.com/index.php/controller/function/parameter
Это поможет вам вставьте этот код в папку приложения В.htacess file
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/ [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/ [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/ [QSA,L]надеюсь, что это помогает!
Привет, этот работал со мной
RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /folder/index.php?/ [L]а также
RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /folder/index.php?/ [L]где папка-это имя подпапки, если это приложение codeigniter размещается как поддомен например, доменное имя / папка / индекс.РНР.
надеюсь, что это работает для вас. Спасибо.
копировать мимо следующего кода в вашем .htaccess
RewriteEngine on Options -Indexes RewriteCond !^(index\.php|assets|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/ [L,QSA]
Comments