it-swarm.com.de

So entfernen Sie "index.php" im Pfad des Codeigniters

Wie entferne ich den "index.php", der in jedem Pfad in codeigniter irgendwo in der Mitte steht? Ich möchte einen sauberen, index.php-fied URLs?

113
OrangeRind

Wenn Sie Apache verwenden, platzieren Sie eine .htaccess-Datei in Ihrem Stammverzeichnis, die Folgendes enthält:

RewriteEngine on
RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

Eine andere gute Version befindet sich hier:

http://snipplr.com/view/5966/codeigniter-htaccess/

88
Sean Vieira

Ich hatte einige große Probleme mit dem Entfernen der index.php. In der Regel wurde der .htaccess unten auf mehreren Servern getestet und funktioniert im Allgemeinen:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]  

<Files "index.php">
AcceptPathInfo On
</Files>  

Wenn Sie damit kein Glück haben, müssen Sie als nächstes Ihre Konfigurationsdatei anpassen. Versuchen Sie einige der anderen URI-Protokolle, z. 

| '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';

Wenn Sie immer noch kein Glück haben, versuchen Sie, die Umschreibungsregel so zu ändern, dass sie Ihren Unterordner enthält. Dies ist häufig ein Problem, wenn Sie eine temporäre URL auf einem Dev-Server verwenden.

RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/$1 [L]  

Spielen Sie einfach mit diesen Optionen, man sollte funktionieren. Stellen Sie außerdem sicher, dass Ihre Indexdatei auf Folgendes eingestellt ist:

$config['index_page'] = '';

Viel Glück!

60
jimbo2087

Die Datei.htaccess muss sich zusammen mit der Datei index.php im Stammverzeichnis der Anwendung befinden. (Prüfen Sie, ob die Erweiterung htaccess korrekt ist. Bz htaccess.txt hat für mich nicht funktioniert.)

Fügen Sie der .htaccess-Datei die folgenden Regeln hinzu: 

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]  

Suchen Sie dann die folgende Zeile in Ihrer Datei application/config/config.php 

$config['index_page'] = 'index.php';

Setzen Sie die Variable wie folgt leer.

$config['index_page'] = '';

Das war es für mich.

Wenn dies nicht funktioniert, versuchen Sie, die folgende Variable durch diese Parameter ('AUTO', 'PATH_INFO', 'QUERY_STRING', 'REQUEST_URI' und 'ORIG_PATH_INFO') nacheinander zu ersetzen 

$config['uri_protocol'] = 'AUTO';
30
Shaolin

Schauen Sie sich die system\application\config\config.php-Datei an, es gibt eine Variable namens index_page

Es sollte so aussehen

$config['index_page'] = "index.php";

Ändern Sie es in

$config['index_page'] = "";

Wie bereits erwähnt, müssen Sie der .htaccess-Datei auch eine Umschreibungsregel hinzufügen

Hinweis: In CodeIgniter v2 wurde diese Datei aus dem Systemordner nach application\config\config.php verschoben.

21
Re0sless

Alle oben genannten Methoden sind für mich fehlgeschlagen, und dann habe ich festgestellt, dass ich AllowOverride keine in AllowOverride All in meiner virtuellen Host-Datei unter/etc/Apache2/sites-available/default geändert habe.

<VirtualHost *:80>
    ServerAdmin [email protected]

    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>

     ...

9
waqas

Schritt 1 => Legen Sie Ihre .htaccess-Datei im Stammverzeichnis ab, in dem sich Anwendungs- und Systemordner befinden.

Schritt 2 => Wenn Ihr Webpfad einen Unterordner wie - yourdomain.com/project/ - verwendet, verwenden Sie folgenden Code in der Datei htaccess

RewriteEngine on
RewriteBase    /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]

Wenn Ihr Webpfad einen Stammordner wie - IhreDomäne.com verwendet - verwenden Sie folgenden Code in der htaccess-Datei

RewriteEngine on
RewriteBase    /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
6
vinod
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /codeigniter/index.php/$0 [PT,L]

nach dem Ändern von RewriteRule. * index.php/$ 0 [PT, L] mit dem Projektordnernamen "codeigniter" .its funktioniert für mich. Danke Jungs für Ihre Unterstützung.

6
Tousif Ahmed
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 

Das muss auf jeden Fall funktionieren .. probiere es aus

5
Ramaraju.d

Ich dachte nur, ich könnte hinzufügen

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

wäre der .htaccess und Sie müssen Ihre Variable application/config.php folgendermaßen bearbeiten:

ersetzen

$config['uri_protocol'] = “AUTO” 

mit

$config['uri_protocol'] = “REQUEST_URI”
5
Jefkine Kafuna

Perfekte Lösung [sowohl auf localhost als auch auf realer Domain getestet]

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L] 
4
Abhishek Goel

Verwenden Sie mod_rewrite wie in dieses Tutorial aus dem CI-Wiki beschrieben.

3
Ben S

Dies ist ein .htaccess für eines meiner CI-Projekte:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /projectFolder/index.php/$1 [L] 

Die letzte Zeile sollte Ihnen das geben, was Sie benötigen, auch wenn Sie '/ projectFolder' benötigen oder nicht, je nachdem, wie Ihre Ordnerstruktur eingerichtet ist. Viel Glück!

3
Matthew Rapati

Stellen Sie sicher, dass Sie mod_rewrite aktiviert haben (hatte ich nicht).
Ermöglichen: 

Sudo a2enmod rewrite  

Ersetzen Sie auch AllowOverride None durch AllowOverride All

Sudo gedit /etc/Apache2/sites-available/default  

Endlich ... 

Sudo /etc/init.d/Apache2 restart  

Mein Zugang ist

RewriteEngine on  
RewriteCond $1 !^(index\.php|[assets/css/js/img]|robots\.txt)  
RewriteRule ^(.*)$ index.php/$1 [L]  
3
miguelitomp

Es gibt zwei Möglichkeiten, index.php im URL-Pfad für Codeigniter zu lösen

1: In config/config.php Code ändern:

$config['index_page'] = 'index.php';

zu

$config['index_page'] = '';

2: Erstellen Sie .htacess im Root-Pfad, falls nicht erstellt. Kopieren Sie den folgenden Code: -

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

Speichern Sie es und checken Sie dann Ihre Apache-Konfiguration ein rewrite_module OR mod_rewrite ist aktiviert.

3
Devraj Gupta

Als .htaccess-Datei ist es eine gute Option, die vom Kohana Framework bereitgestellte zu verwenden:

# 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]

Es ist ein gut durchdachter .htaccess, der einfach funktioniert.

3
this.lau_

Schauen Sie in die \application\config\config.php-Datei, es gibt eine Variable mit dem Namen index_page

Es sollte so aussehen

$config['index_page'] = "index.php";

Ändern Sie es in

$config['index_page'] = "";

Wie bereits erwähnt, müssen Sie der .htaccess-Datei auch eine Umschreibungsregel hinzufügen:

RewriteEngine on
RewriteCond $1 !^(index\\.php|resources|robots\\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

Es funktioniert für mich, ich hoffe auch Sie.

2
glider

ich habe dies auf Apache2 auf vielen verschiedenen Hostings getestet und es funktioniert super.

verwenden Sie diesen Zugriff

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

stellen Sie sicher, dass Sie enabled mod_rewirte mit einer phpinfo(); haben.

dann mache dies in 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';

wenn es noch nicht funktioniert, ändern Sie den $config['uri_protocol']='AUTO' in eine der aufgelisteten application/config/config.php-Dateien in Zeile 40/54:

manchmal verwendete ich: REQUEST_URI anstelle von AUTO oder "QUERY_STRING" für goDaddy-Hostings

2
itsme

Wenn Sie mit Linux arbeiten und einen Apache2-Server verwenden, müssen wir möglicherweise die Datei Apache2.conf außer den Änderungen für die .htaccess-Datei außer Kraft setzen. Suchen Sie nach der Apache2-Konfigurationsdatei unter-etc/Apache2/Apache2.conf .

Suchverzeichnis/var/www/Change AllowOverride Keiner -> AllowOverride All

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory
2
rabin

Ich habe viele Lösungen ausprobiert.

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]

Dadurch wird die index.php nach Bedarf aus der URL entfernt.

1
codegeek

Ich verwende diese Zeilen in .htaccess-Datei; die ich im root-Ordner ablege

RewriteEngine on
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]

Dann kann ich auf http://example.com/controller/function/parameter zugreifen.

anstelle von http://example.com/index.php/controller/function/parameter

1
Scorpion

Platziere eine .htaccess-Datei in deinem Wurzel-Webverzeichnis

Was auch immer Sie tun, wenn Sie das tun, was nicht funktioniert, wird es nicht funktionieren. Normalerweise befindet es sich im Systemordner und sollte sich im Stammverzeichnis befinden. Prost!

1
foxybagga

Dieser hat mir die ganze Magie gebracht:

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]

Ich hoffe es hilft!

0
bmnepali

Schritt 1:

Fügen Sie dies in die htaccess-Datei ein

<IfModule mod_rewrite.c> 
RewriteEngine On 
#RewriteBase / 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^ index.php [QSA,L] 
</IfModule>

Schritt 2:

Entfernen Sie die Datei index.php aus der Codeigniter-Konfiguration

$config['base_url'] = ''; 
$config['index_page'] = '';

Schritt 3:

Überschreibenden Zugriff in der Apache-Konfiguration zulassen (Befehl)

Sudo nano /etc/Apache2/Apache2.conf und bearbeiten Sie die Datei und wechseln Sie zu

AllowOverride All

für www ordner

Schritt 4:

Umschreiben von Apache-Mods aktiviert (Befehl)

Sudo a2enmod umschreiben

Schritt 5:

Apache neu starten (Befehl)

Sudo /etc/init.d/Apache2 restart
0
Shashank Saxena

Dies hilft Ihnen Fügen Sie diesen Code in den Anwendungsordner in der .htaccess-Datei ein

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>
0
Majid
<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>
0
mohd jagir

Kopieren Sie den folgenden Code in Ihren .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]
0
dev87

Hallo, das hat mich bearbeitet

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]

so gut wie das

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]

dabei ist der Ordner der Name des Unterordners, wenn diese Codeigniter-Anwendung als Unterdomäne gehostet wird z. B. Domänenname/Ordner/Index.php.

Hoffe das funktioniert für dich. Vielen Dank.

0
lightup