Bagaimana cara menghapus "index.php"
penonjolan di setiap jalur di codeigniter di suatu tempat di tengah? Saya ingin bersih bukan index.php-fied URLs
?
Bagaimana cara menghapus "index.php"
penonjolan di setiap jalur di codeigniter di suatu tempat di tengah? Saya ingin bersih bukan index.php-fied URLs
?
Jawaban:
Jika Anda menggunakan Apache, letakkan file .htaccess di direktori web root Anda yang berisi berikut ini:
RewriteEngine on
RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Versi bagus lainnya ada di sini:
RewriteCond $1 !^\/(index\.php|assets|robots\.txt)
Saya mengalami beberapa masalah besar dengan menghapus index.php. Sebagai aturan umum, .htaccess di bawah ini telah diuji di beberapa server dan biasanya berfungsi:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
<Files "index.php">
AcceptPathInfo On
</Files>
Jika Anda tidak beruntung dengan itu maka langkah selanjutnya adalah menyesuaikan file konfigurasi Anda. Coba beberapa protokol URI lainnya, misalnya
| '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';
Jika Anda masih belum berhasil, coba ubah aturan penulisan ulang untuk menyertakan subfolder Anda. Ini sering menjadi masalah jika Anda menggunakan URL sementara di server dev, dll:
RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/$1 [L]
Hanya bermain-main dengan opsi ini, salah satunya harus berfungsi. Selain itu, pastikan file indeks Anda disetel ke:
$config['index_page'] = '';
Semoga berhasil!
Miliki file.htaccess di direktori root aplikasi, bersama dengan file index.php. (Periksa apakah ekstensi htaccess sudah benar, Bz htaccess.txt tidak berfungsi untuk saya.)
Dan Tambahkan aturan berikut ke file .htaccess,
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Kemudian temukan baris berikut di file application / config / config.php Anda
$config['index_page'] = 'index.php';
Atur variabel kosong seperti di bawah ini.
$config['index_page'] = '';
Itu saja, itu berhasil untuk saya.
Jika tidak berhasil, coba ganti variabel berikut dengan parameter ini ('AUTO', 'PATH_INFO', 'QUERY_STRING', 'REQUEST_URI', dan 'ORIG_PATH_INFO') satu per satu
$config['uri_protocol'] = 'AUTO';
Coba lihat di system\application\config\config.php
file tersebut, ada variabel bernamaindex_page
Seharusnya terlihat seperti ini
$config['index_page'] = "index.php";
ubah menjadi
$config['index_page'] = "";
Kemudian seperti yang disebutkan, Anda juga perlu menambahkan aturan penulisan ulang ke .htaccess
file
Catatan: di CodeIgniter v2 file ini dipindahkan dari folder sistem ke application\config\config.php
Semua metode di atas gagal untuk saya dan kemudian saya menemukan bahwa saya tidak mengubah AllowOverride None menjadi AllowOverride All di file host virtual saya di / 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]
setelah mengubah RewriteRule. * index.php / $ 0 [PT, L] dengan nama folder proyek "codeigniter". Ini bekerja untuk saya. Terima kasih teman-teman atas dukungan Anda.
Langkah 1 => Tempatkan file .htaccess Anda di folder root di mana folder aplikasi dan sistem berada.
Langkah 2 => Jika jalur web Anda menggunakan sub-folder seperti - domainanda.com/project/ - maka gunakan kode berikut di file htaccess
RewriteEngine on
RewriteBase /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]
Jika jalur web Anda menggunakan folder root seperti - domainanda.com - maka gunakan kode berikut di file htaccess
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Hanya berpikir saya bisa menambahkan
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
akan menjadi .htaccess dan pastikan untuk mengedit variabel application / config.php Anda dengan cara berikut:
menggantikan
$config['uri_protocol'] = “AUTO”
dengan
$config['uri_protocol'] = “REQUEST_URI”
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Ini pasti berhasil .. cobalah
Pastikan Anda telah mengaktifkan mod_rewrite
(saya belum).
Untuk mengaktifkan:
sudo a2enmod rewrite
Selain itu, ganti AllowOverride None
denganAllowOverride All
sudo gedit /etc/apache2/sites-available/default
Akhirnya ...
sudo /etc/init.d/apache2 restart
.Htaccess saya adalah
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]
Ini adalah .htaccess untuk salah satu proyek CI saya:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /projectFolder/index.php/$1 [L]
Baris terakhir akan memberikan apa yang Anda butuhkan, meskipun Anda mungkin atau mungkin tidak memerlukan '/ projectFolder' tergantung pada bagaimana struktur folder Anda diatur. Semoga berhasil!
Gunakan mod_rewrite
seperti yang diinstruksikan dalam tutorial ini dari CI wiki.
Sebagai file .htaccess, opsi yang bagus adalah menggunakan yang disediakan oleh 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/$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]
Ini adalah .htaccess yang dipikirkan dengan baik dan berfungsi.
Ada dua cara untuk menyelesaikan index.php di jalur url untuk codeigniter
1: Di config / config.php Ubah kode:
$config['index_page'] = 'index.php';
untuk
$config['index_page'] = '';
2: Buat .htacess di jalur root jika tidak dibuat, Salin kode berikut: -
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Simpan dan cek di Apache Configuration rewrite_module ATAU mod_rewrite is Enabled. Jika belum, silakan aktifkan. (Pendekatan Terbaik)!
Saya menguji ini di apache2 di banyak hosting yang berbeda dan berfungsi dengan baik.
gunakan htaccess ini
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
pastikan Anda memiliki enabled mod_rewirte
denganphpinfo();
lalu lakukan ini di 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';
jika belum berhasil, coba ubah $config['uri_protocol']='AUTO'
ke salah satu application/config/config.php
file di dalam yang tercantum di baris 40/54:
terkadang saya menggunakan: REQUEST_URI
alih-alih AUTO
atau "QUERY_STRING"
untuk hosting goDaddy
Lihat di \application\config\config.php
file tersebut, ada variabel bernamaindex_page
Seharusnya terlihat seperti ini
$config['index_page'] = "index.php";
ubah menjadi
$config['index_page'] = "";
Kemudian seperti yang disebutkan Anda juga perlu menambahkan aturan penulisan ulang ke .htaccess
file seperti ini:
RewriteEngine on
RewriteCond $1 !^(index\\.php|resources|robots\\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Ini berhasil untuk saya, harap Anda juga.
Jika Anda menggunakan linux dan menggunakan server apache2 maka kami mungkin perlu mengganti file apache2.conf juga di samping perubahan pada file .htaccess. Temukan file konfigurasi apache2 di /etc/apache2/apache2.conf .
Cari Direktori / var / www / Ubah AllowOverride Tidak Ada -> AllowOverride Semua
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory
tempatkan file .htaccess di direktori web root Anda
Apapun tweaker yang Anda lakukan - jika hal di atas tidak terpenuhi - itu tidak akan berhasil. Biasanya ada di folder Sistem, itu harus di root. Bersulang!
application
direktori, bukan di root.
Saya telah mencoba banyak solusi tetapi yang saya dapatkan adalah ini:
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]
Ini saya akan menghapus index.php dari url sesuai kebutuhan.
Saya menggunakan baris ini dalam .htaccess
file; yang saya tempatkan di folder root
RewriteEngine on
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
Kemudian saya dapat mengakses http://example.com/controller/function/parameter
alih-alih http://example.com/index.php/controller/function/parameter
Ini akan membantu Anda menempelkan kode ini di folder aplikasi di file .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>
Yang ini membuatku benar-benar ajaib:
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]
Semoga membantu!
Hai Yang satu ini berhasil
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
serta ini
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
dimana foldernya adalah nama subfolder jika aplikasi codeigniter ini di-host sebagai subdomain misal domainname / folder / index.php.
Harapan itu berhasil untuk Anda. Terima kasih.
Salin kode berikut di .htaccess Anda
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>
Langkah 1 :
Tambahkan ini di file htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
Langkah 2 :
Hapus index.php di konfigurasi codeigniter
$config['base_url'] = '';
$config['index_page'] = '';
Langkah 3:
Izinkan penggantian htaccess di Apache Configuration (Command)
sudo nano /etc/apache2/apache2.conf dan edit file & ubah ke
AllowOverride All
untuk folder www
Langkah 4:
Penulisan ulang mod apache yang diaktifkan (Perintah)
sudo a2enmod menulis ulang
Langkah 5:
Mulai ulang Apache (Perintah)
sudo /etc/init.d/apache2 restart