"index.php"
Kod işaretleyicinin her yolunun ortada bir yerde dışarı çıkmasını nasıl kaldırırım ? Temiz olmayan istiyorum index.php-fied URLs
?
"index.php"
Kod işaretleyicinin her yolunun ortada bir yerde dışarı çıkmasını nasıl kaldırırım ? Temiz olmayan istiyorum index.php-fied URLs
?
Yanıtlar:
Apache kullanıyorsanız, kök web dizininize aşağıdakileri içeren bir .htaccess dosyası yerleştirin:
RewriteEngine on
RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Başka bir iyi versiyon burada bulunur:
RewriteCond $1 !^\/(index\.php|assets|robots\.txt)
İndex.php'yi kaldırırken bazı büyük sorunlar yaşadım. Genel bir kural olarak, aşağıdaki .htaccess birkaç sunucuda test edilmiştir ve genel olarak çalışır:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
<Files "index.php">
AcceptPathInfo On
</Files>
Bununla ilgili hiç şansınız yoksa, sonraki adım yapılandırma dosyanızı ayarlamaktır. Diğer URI protokollerinden bazılarını deneyin, örn.
| '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';
Hala şansınız yoksa, alt klasörünüzü dahil etmek için yeniden yazma kuralını değiştirmeyi deneyin. Dev sunucusunda vb. Geçici bir URL kullanıyorsanız bu genellikle bir sorundur:
RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/$1 [L]
Sadece bu seçeneklerle oynayın, biri çalışmalı. Ayrıca, dizin dosyanızın şu şekilde ayarlandığından emin olun:
$config['index_page'] = '';
İyi şanslar!
İndex.php dosyasıyla birlikte uygulamanın kök dizininde .htaccess dosyasını bulundurun. (Htaccess uzantısının doğru olup olmadığını kontrol edin, Bz htaccess.txt benim için çalışmadı.)
.Htaccess dosyasına aşağıdaki kuralları ekleyin,
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Ardından application / config / config.php dosyanızda aşağıdaki satırı bulun
$config['index_page'] = 'index.php';
Değişkeni aşağıdaki gibi boş olarak ayarlayın.
$config['index_page'] = '';
İşte bu, benim için çalıştı.
Daha fazla işe yaramazsa, aşağıdaki değişkeni bu parametrelerle ('AUTO', 'PATH_INFO', 'QUERY_STRING', 'REQUEST_URI' ve 'ORIG_PATH_INFO') tek tek değiştirmeyi deneyin
$config['uri_protocol'] = 'AUTO';
system\application\config\config.php
Dosyaya bir göz atın, adında bir değişken varindex_page
Böyle görünmeli
$config['index_page'] = "index.php";
olarak değiştir
$config['index_page'] = "";
Daha sonra belirtildiği gibi, .htaccess
dosyaya bir yeniden yazma kuralı eklemeniz gerekir.
Not: CodeIgniter v2'de bu dosya sistem klasöründen şuraya taşındı: application\config\config.php
Yukarıdaki tüm yöntemler benim için başarısız oldu ve sonra / etc / apache2 / sites-available / default adresindeki sanal ana bilgisayar dosyamda AllowOverride None olarak AllowOverride All olarak değiştirmediğimi fark ettim.
<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] 'yi "codeigniter" .its proje klasörü adıyla değiştirdikten sonra benim için çalışıyor. Desteğiniz için teşekkürler çocuklar.
Adım 1 => .htaccess dosyanızı, uygulama ve sistem klasörlerinin bulunduğu kök klasöre yerleştirin.
Adım 2 => Web yolunuz - alaniniz.com/project/ gibi bir alt klasör kullanıyorsanız, htaccess dosyasında aşağıdaki kodu kullanın
RewriteEngine on
RewriteBase /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]
Kök klasörünü kullanan web yolunuz - alaniniz.com gibi - o zaman htaccess dosyasında aşağıdaki kodu kullanın
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Sadece ekleyebileceğimi düşündüm
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
htaccess olacaktır ve application / config.php değişkeninizi aşağıdaki şekilde düzenlediğinizden emin olun:
değiştirmek
$config['uri_protocol'] = “AUTO”
ile
$config['uri_protocol'] = “REQUEST_URI”
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Bu kesinlikle işe yaramalı .. bir dene
Etkinleştirdiğinizden emin olun mod_rewrite
(ben yapmadım).
Etkinleştirmek:
sudo a2enmod rewrite
Ayrıca, şununla değiştirin AllowOverride None
:AllowOverride All
sudo gedit /etc/apache2/sites-available/default
Sonda gelen ...
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]
Bu, CI projelerimden biri için bir .htaccess:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /projectFolder/index.php/$1 [L]
Klasör yapınızın nasıl ayarlandığına bağlı olarak '/ projeKlasörü'ne ihtiyacınız olabilir veya olmayabilir, ancak son satır size ihtiyacınız olanı vermelidir. İyi şanslar!
CI wiki'deki bu öğreticide belirtildiğimod_rewrite
gibi kullanın .
Bir .htaccess dosyası olarak Kohana Framework tarafından sağlanan dosyayı kullanmak iyi bir seçenektir :
# 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]
İşe yarayan iyi düşünülmüş bir .htaccess.
Codeigniter için url yolunda index.php'yi çözmenin iki yolu vardır
1: config / config.php'de Kodu değiştir:
$config['index_page'] = 'index.php';
için
$config['index_page'] = '';
2: Oluşturulmadıysa, kök yolunda .htacess oluşturun, Aşağıdaki kodu kopyalayın: -
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Kaydedin ve ardından Apache Yapılandırması rewrite_module'unuzu kontrol edin VEYA mod_rewrite Etkinleştirildi. Değilse lütfen etkinleştirin. (En İyi Yaklaşım)!
Bunu apache2 üzerinde birçok farklı barındırmada test ettim ve harika çalışıyor.
bu htaccess'i kullan
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
emin olması gereken enabled mod_rewirte
bir ilephpinfo();
sonra bunu config / config.php içinde yapın:
$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';
henüz çalışmazsa, 40/54 satırında $config['uri_protocol']='AUTO'
listelenen application/config/config.php
dosyalardan birini değiştirmeyi deneyin :
bazen goDaddy barındırmaları REQUEST_URI
yerine AUTO
veya "QUERY_STRING"
için kullandım
Bak \application\config\config.php
dosyanın adında bir değişken vardırindex_page
Böyle görünmeli
$config['index_page'] = "index.php";
olarak değiştir
$config['index_page'] = "";
Daha sonra belirtildiği .htaccess
gibi , dosyaya aşağıdaki gibi bir yeniden yazma kuralı eklemeniz gerekir :
RewriteEngine on
RewriteCond $1 !^(index\\.php|resources|robots\\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Benim için çalışıyor, umarım sizde.
Linux üzerindeyseniz ve apache2 sunucusu kullanıyorsanız, .htaccess dosyasındaki değişikliklerin yanı sıra apache2.conf dosyasını da geçersiz kılmamız gerekebilir. /Etc/apache2/apache2.conf üzerinde apache2 yapılandırma dosyasını bulun .
Arama Dizini / var / www / AllowOverride None -> AllowOverride All
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory
kök web dizininize bir .htaccess dosyası yerleştirin
Yaptığınız ince ayar ne olursa olsun - yukarıdakiler karşılanmazsa - işe yaramayacaktır. Genellikle Sistem klasöründe, kökte olması gerekir. Şerefe!
application
kök yerine dizinde gelir .
Birçok çözüm denedim ama bulduğum şey şu:
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]
Bu, gerektiği gibi index.php'yi url'den kaldıracaktır.
Bu satırları .htaccess
dosyada kullanıyorum; kök klasöre yerleştirdiğim
RewriteEngine on
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
Sonra http://example.com/controller/function/parameter'a erişebilirim
http://example.com/index.php/controller/function/parameter yerine
Bu, bu kodu .htacess dosyasındaki uygulama klasörüne yapıştırmanıza yardımcı olacaktır.
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>
Bu bana tam bir sihir yaptı:
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]
Umarım yardımcı olur!
Merhaba Bu beni çalıştı
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
bunun kadar iyi
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
burada, bu kod işaretleyici uygulaması bir alt alan adı olarak barındırılıyorsa, klasör alt klasörün adıdır, örneğin alanadı / klasör / indeks.php.
Umarım bu sizin için çalışır. Teşekkürler.
.Htaccess dosyanıza aşağıdaki kodu kopyalayın
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>
Aşama 1 :
Bunu htaccess dosyasına ekleyin
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
Adım 2 :
Codeigniter yapılandırmasında index.php dosyasını kaldırın
$config['base_url'] = '';
$config['index_page'] = '';
Aşama 3 :
Apache Yapılandırmasında (Komut) htaccess'in geçersiz kılınmasına izin ver
sudo nano /etc/apache2/apache2.conf ve dosyayı düzenleyin ve değiştirin
AllowOverride All
www klasörü için
4. Adım:
Etkin apache modu yeniden yazma (Komut)
sudo a2enmod yeniden yaz
Adım 5 :
Apache'yi yeniden başlatın (Komut)
sudo /etc/init.d/apache2 restart