Wie entferne ich das "index.php"
Herausragen in jedem Pfad im Codeigniter irgendwo in der Mitte? Ich will nicht sauber index.php-fied URLs
?
Wie entferne ich das "index.php"
Herausragen in jedem Pfad im Codeigniter irgendwo in der Mitte? Ich will nicht sauber index.php-fied URLs
?
Antworten:
Wenn Sie Apache verwenden, legen Sie eine .htaccess-Datei in Ihrem Root-Webverzeichnis ab, 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 weitere gute Version finden Sie hier:
RewriteCond $1 !^\/(index\.php|assets|robots\.txt)
Ich hatte einige große Probleme beim Entfernen der index.php. In der Regel wurde der folgende .htaccess 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. Probieren Sie einige der anderen URI-Protokolle aus, 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, ändern Sie die Umschreiberegel, um Ihren Unterordner einzuschließen. Dies ist häufig ein Problem, wenn Sie eine temporäre URL auf einem Entwicklungsserver usw. verwenden:
RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/$1 [L]
Spielen Sie einfach mit diesen Optionen herum, man sollte arbeiten. Stellen Sie außerdem sicher, dass Ihre Indexdatei auf Folgendes eingestellt ist:
$config['index_page'] = '';
Viel Glück!
Haben Sie die Datei.htaccess zusammen mit der Datei index.php im Anwendungsstammverzeichnis. (Überprüfen Sie, ob die htaccess-Erweiterung korrekt ist. Bz htaccess.txt hat bei mir 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's, es hat bei mir funktioniert.
Wenn es nicht weiter funktioniert, versuchen Sie, die folgende Variable nacheinander durch diese Parameter ('AUTO', 'PATH_INFO', 'QUERY_STRING', 'REQUEST_URI' und 'ORIG_PATH_INFO') zu ersetzen
$config['uri_protocol'] = 'AUTO';
Schauen Sie sich die system\application\config\config.php
Datei an, es gibt eine Variable mit dem Namenindex_page
Es sollte so aussehen
$config['index_page'] = "index.php";
ändere es auf
$config['index_page'] = "";
Dann müssen Sie, wie erwähnt, der .htaccess
Datei auch eine Umschreiberegel hinzufügen
Hinweis: In CodeIgniter v2 wurde diese Datei aus dem Systemordner in verschoben application\config\config.php
Alle oben genannten Methoden sind für mich fehlgeschlagen, und dann habe ich festgestellt, dass ich AllowOverride None in AllowOverride All in meiner virtuellen Hostdatei unter / etc / apache2 / sites-available / default nicht geändert habe
<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]
Nach dem Ändern von RewriteRule. * index.php / $ 0 [PT, L] mit dem Projektordnernamen "codeigniter" .es funktioniert für mich. Danke Jungs für eure Unterstützung.
Schritt 1 => Legen Sie Ihre .htaccess-Datei im Stammordner ab, in dem Anwendungs- und Systemordner vorhanden sind.
Schritt 2 => Wenn Ihr Webpfad einen Unterordner wie - yourdomain.com/project/ - verwendet, verwenden Sie den folgenden Code in der htaccess-Datei
RewriteEngine on
RewriteBase /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]
Wenn Ihr Webpfad einen Stammordner wie - yourdomain.com - verwendet, verwenden Sie den folgenden Code in der htaccess-Datei
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
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 die .htaccess und stellen Sie sicher, dass Sie Ihre application / config.php-Variable auf folgende Weise bearbeiten:
ersetzen
$config['uri_protocol'] = “AUTO”
mit
$config['uri_protocol'] = “REQUEST_URI”
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Das muss auf jeden Fall funktionieren. Probieren Sie es aus
Stellen Sie sicher, dass Sie aktiviert haben mod_rewrite
(ich hatte nicht).
Ermöglichen:
sudo a2enmod rewrite
Ersetzen Sie auch AllowOverride None
durchAllowOverride All
sudo gedit /etc/apache2/sites-available/default
Endlich ...
sudo /etc/init.d/apache2 restart
Mein .htaccess ist
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]
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 brauchen, obwohl Sie möglicherweise '/ projectFolder' benötigen oder nicht, je nachdem, wie Ihre Ordnerstruktur eingerichtet ist. Viel Glück!
Verwenden Sie es mod_rewrite
wie in diesem Tutorial beschrieben aus dem CI-Wiki.
Als .htaccess-Datei empfiehlt es sich, 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.
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 Stammpfad, 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 ODER mod_rewrite ist aktiviert. Wenn nicht, aktivieren Sie es bitte. (Bester Ansatz)!
Ich habe dies auf Apache2 auf vielen verschiedenen Hosting getestet und es funktioniert großartig.
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 einemphpinfo();
dann mach das 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, versuchen Sie, die Datei $config['uri_protocol']='AUTO'
in eine der application/config/config.php
in Zeile 40/54 aufgeführten Dateien zu ändern:
manchmal habe ich verwendet: REQUEST_URI
anstelle von AUTO
oder "QUERY_STRING"
für goDaddy-Hostings
Schauen Sie in die \application\config\config.php
Datei, es gibt eine Variable mit dem Namenindex_page
Es sollte so aussehen
$config['index_page'] = "index.php";
ändere es auf
$config['index_page'] = "";
Dann müssen Sie, wie erwähnt, der .htaccess
Datei auch eine Umschreiberegel wie folgt 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, hoffe du auch.
Wenn Sie unter Linux arbeiten und den Apache2-Server verwenden, müssen wir möglicherweise die Datei apache2.conf neben den Änderungen an der .htaccess-Datei überschreiben. Suchen Sie die Apache2-Konfigurationsdatei unter /etc/apache2/apache2.conf .
Suchverzeichnis / var / www / Change AllowOverride None -> AllowOverride All
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory
Platzieren Sie eine .htaccess-Datei in Ihrem Root-Webverzeichnis
Was auch immer Sie optimieren - wenn die oben genannten Bedingungen nicht erfüllt sind, funktioniert es nicht. Normalerweise befindet es sich im Systemordner im Stammverzeichnis. Prost!
application
Verzeichnis anstelle von root gespeichert .
Ich habe viele Lösungen ausprobiert, aber die, die ich mir ausgedacht habe, ist folgende:
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.
Ich benutze diese Zeilen in der .htaccess
Datei; was ich in den Stammordner lege
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 zugreifen http://example.com/controller/function/parameter
anstelle von http://example.com/index.php/controller/function/parameter
Auf diese Weise können Sie diesen Code in den Anwendungsordner in der .htacess-Datei einfügen
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>
Dieser hat mir die komplette 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!
Hallo, dieser hat mir geholfen
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 bei dir. Vielen Dank.
Kopieren Sie den folgenden 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]
<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>
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 index.php in der Codeigniter-Konfiguration
$config['base_url'] = '';
$config['index_page'] = '';
Schritt 3 :
Überschreiben des Zugriffs 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 :
Apache Mod Rewrite aktiviert (Befehl)
sudo a2enmod umschreiben
Schritt 5:
Starten Sie Apache neu (Befehl)
sudo /etc/init.d/apache2 restart