Как удалить " index.PHP" в пути в CodeIgniter это
Как убрать "index.php"
торчит на каждом пути в codeigniter где-то в центре?
Я хочу чистый non index.php-fied URLs
?
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-адрес на dev-сервере и т. д.:
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'] = "";
тогда, как уже упоминалось, вам также нужно добавить правило перезаписи в
Примечание: В CodeIgniter v2 этот файл был перемещен из системной папки в application\config\config.php
все вышеперечисленные методы не для меня, а потом я обнаружил, что я не менял AllowOverride Нет to AllowOverride Все в моем файле виртуального хоста в / etc/apache2/sites-доступно / по умолчанию
<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]
Это должно работать.. попробуйте
идеальное решение [ протестировано на localhost, а также на реальном домене ]
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
(у меня не было).
Чтобы включить:
sudo a2enmod rewrite
и заменить AllowOverride None
by AllowOverride All
sudo gedit /etc/apache2/sites-available/default
Finaly...
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]
это работает для меня, надеюсь вы.
Как .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';
to
$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
место a .файл 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
Это поможет вам вставьте этот код в папку application .htacess файл
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 размещается как поддомен e.g имя домена / папка / индекс.РНР.
надеюсь, что это сработает для вас. Спасибо.
скопируйте следующий код в свой .реврайт
RewriteEngine on
Options -Indexes
RewriteCond !^(index\.php|assets|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [L,QSA]