Як я можу видалити "index.php"
стирчать у кожній контурі в кодигнайтері десь у центрі? Я хочу чистого не index.php-fied URLs
?
Як я можу видалити "index.php"
стирчать у кожній контурі в кодигнайтері десь у центрі? Я хочу чистого не 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]
Ще одна хороша версія розміщена тут:
RewriteCond $1 !^\/(index\.php|assets|robots\.txt)
У мене виникли великі проблеми із видаленням 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-адресу на сервері розробників тощо:
RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/$1 [L]
Просто пограйте з цими параметрами, треба працювати. Також переконайтесь, що ваш індексний файл встановлено на:
$config['index_page'] = '';
Удачі!
Майте файл.htaccess у кореневому каталозі програми, а також файл index.php. (Перевірте, чи правильне розширення htaccess, Bz htaccess.txt не працював для мене.)
І додайте до файлу .htaccess такі правила,
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [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';
Подивіться у 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" .моє працювати на мене. Дякую хлопцям за підтримку.
Крок 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 $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
буде .htaccess і не забудьте відредагувати змінну програми / 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]
Це обов'язково спрацює .. спробуйте
Переконайтесь, що ви ввімкнули mod_rewrite
(я цього не зробив).
Для того, щоб:
sudo a2enmod rewrite
Також замініть AllowOverride None
наAllowOverride All
sudo gedit /etc/apache2/sites-available/default
Нарешті ...
sudo /etc/init.d/apache2 restart
Мій .htaccess є
RewriteEngine on
RewriteCond $1 !^(index\.php|[assets/css/js/img]|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
actions
: stackoverflow.com/questions/14419757 / ...
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Це .htaccess для одного з моїх проектів ІС:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /projectFolder/index.php/$1 [L]
Останній рядок повинен дати вам те, що вам потрібно, хоча ви можете або не знадобиться '/ projectFolder' залежно від того, як налаштована структура вашої папки. Удачі!
Використовуйте mod_rewrite
згідно інструкцій у цьому підручнику з вікі CI.
Як файл .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, який просто працює.
Є два способи вирішити index.php в URL-адресі для кодарійтера
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 Configuration rewrite_module OR mod_rewrite увімкнено. Якщо не ввімкнено будь-ласка, (Найкращий підхід)!
Я тестував це на 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 розміщення
Подивіться в \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]
Це працює для мене, сподіваюся, і ви.
Якщо ви перебуваєте на 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
розмістіть .htaccess файл у вашій кореневій веб-каталозі
Що б ви не підкоригували - якщо вищезгадане не буде виконано - воно не спрацює. Зазвичай його в папці System, він повинен бути в корені. Ура!
application
каталог замість root.
Я спробував багато рішень, але одне з яких я придумав, це таке:
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]
Це, якщо потрібно, видалить 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]
де папка - це ім'я підпапки, якщо ця програма для кодування програм розміщена як субдомен, наприклад, доменне ім’я / папка / 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]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /Foldername of your ci/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Крок 1 :
Додайте це у файл htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
Крок 2:
Видаліть index.php у конфігураторі кодування
$config['base_url'] = '';
$config['index_page'] = '';
Крок 3:
Дозволити переопределення htaccess у конфігурації Apache (команда)
sudo nano /etc/apache2/apache2.conf та відредагуйте файл та змініть на
AllowOverride All
для папки www
Крок 4:
Увімкнено перезапис apache mod (Command)
переписати sudo a2enmod
Крок 5:
Перезапустити Apache (команда)
sudo /etc/init.d/apache2 restart