CodeIgniter entfernt index.php aus der URL

159

Meine aktuellen URLs sehen so aus [mysite]index.php/[rest of the slug] .
Ich möchte index.phpdiese URLs entfernen.

mod_rewriteist auf meinem Apache2-Server aktiviert. In config,$config['index_page'] = '';

Mein Codeignitor root .htaccess enthält:

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

Aber es funktioniert immer noch nicht. Wo gehe ich falsch?

Nihar Sarangi
quelle
2
Mögliches Duplikat von So entfernen Sie "index.php" im Pfad des
Codeigniters
Warum hat diese Frage so viele doppelte Antworten
Tilak Maddy

Antworten:

239

Versuche Folgendes

Öffnen Sie config.php und führen Sie die folgenden Ersetzungen durch

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

zu

$config['index_page'] = ""

In einigen Fällen uri_protocolfunktioniert die Standardeinstellung für nicht ordnungsgemäß. Einfach ersetzen

$config['uri_protocol'] ="AUTO"

durch

$config['uri_protocol'] = "REQUEST_URI"

.htaccess

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

Hinweis: Der .htaccess-Code variiert je nach Hosting-Server. In einigen Hosting-Server (zB: Godaddy) muss ein Extra verwendet werden? in der letzten Zeile des obigen Codes. Die folgende Zeile wird im jeweiligen Fall durch die letzte Zeile ersetzt:

// Replace last .htaccess line with this line
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 
Rahul Tailwal
quelle
4
Ich habe diesen Code RewriteRule ^(.*)$ index.php/$1 [L]ausprobiert. Trotzdem kann ich die Seite in beiden Richtungen anzeigen: domain.com/about-us, domain.com/index.php/about-us und domain.com/index.php?/about-us, die generiert werden SEO-Fehler, dh doppeltes Titel-Tag und doppelte Meta-Beschreibung
Musaddiq Khan
Vielen Dank für die Antwort. Ich habe das gleiche Problem und füge die erste RewriteCond hinzu, damit es funktioniert. Können Sie erläutern, warum das Handbuch (hier: codeigniter.com/userguide3/general/… ) es nicht erwähnt?
Claudio
Vielen Dank für Ihre Antwort, ich habe das gleiche Problem von Tank-Auth
striker_axel
$_POSToder isset($_POST)nicht funktionieren, nachdem dies hinzugefügt wurde.
DCK
1
und vergessen Sie nicht, die Apache-Konfiguration zu ändern, wie in stackoverflow.com/a/14807463/1537413
Dika
134

Schritt: -1 Öffnen Sie den Ordner „application / config“ und öffnen Sie die Datei „config.php“. Suchen und ersetzen Sie den folgenden Code in der Datei config.php.

//find the below code   
$config['index_page'] = "index.php" 
//replace with the below code
$config['index_page'] = ""

Schritt: -2 Wechseln Sie in Ihren CodeIgniter-Ordner und erstellen Sie .htaccess

Path:
Your_website_folder/
application/
assets/
system/
.htaccess <——— this file
index.php

Schritt: -3 Schreiben Sie den folgenden Code in die .htaccess-Datei

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

Schritt: -4 In einigen Fällen funktioniert die Standardeinstellung für uri_protocol nicht ordnungsgemäß. Um dieses Problem zu lösen, öffnen Sie einfach die Datei „application / config / config.php“ und suchen und ersetzen Sie den folgenden Code

//Not needed for CodeIgniter 3 its already there.
//find the below code
$config['uri_protocol'] = "AUTO"
//replace with the below code
$config['uri_protocol'] = "REQUEST_URI" 

Das ist alles, aber in Wamp Server funktioniert es nicht, weil rewrite_module standardmäßig deaktiviert ist, so dass wir es aktivieren müssen. Gehen Sie dazu wie folgt vor

  1. Klicken Sie mit der linken Maustaste auf das WAMP-Symbol
  2. Apache
  3. Apache-Module
  4. Klicken Sie mit der linken Maustaste auf rewrite_module

Originaldokumentation

Beispiel Link

MaxEcho
quelle
6
Ich musste die .htaccess in den Stammordner anstelle des "Anwendungs"
-Ordners
Ich habe keinen CodeIgniter-Ordner. Worüber redest du?
Nicolas S.Xu
1
es entfernt index.php, aber ich muss auch zusätzlichen Backslash '/' entfernen
Pradeep Kumar Prabaharan
nach dem Ändern in config.php und dem Erstellen der .htaccess-Datei. Ich erhalte den Fehler Analysefehler: Syntaxfehler, unerwartete '$ config' (T_VARIABLE) in application \ config \ config.php in Zeile 55
Fawwad
Danke für die Antwort. Für mich musste ich meine htaccess-Datei wie gezeigt aktualisieren und dann sicherstellen, dass es sich um ein Geschwister des Systemordners handelt, nicht darin.
Kiky Rodriguez
43

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 rewrite

Schritt 5:

Starten Sie Apache neu (Befehl)

sudo /etc/init.d/apache2 restart
Dino
quelle
3
"AllowOverride All" in apache2.conf hat das Problem für mich gelöst, da .htaccess-Füllungen standardmäßig nicht verwendet werden.
Laurent Jégou
1
Ich wünschte, ich könnte dir dafür einen Bonus geben! Hat meinen Tag gerettet. Verbrachte 2 Stunden danach: |
Kiran P.
1
Es scheint, dass für neuere Linux-Distributionen das erste, was man tun muss, die AllowOveride-Regel zu bearbeiten
Nasz Njoka Sr.
Endlich hat es funktioniert. Vielen Dank. Die AllowOveride-Regel hilft mir bei diesem Problem. Ich benutze Ubuntu 16.04
Apit John Ismail
Ausgezeichnete Lösung, danke :)
Razib Al Mamun
16
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

verwenden

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

Wenn Sie eine URL in dieser Bestellung haben site.com/index.php/class/method/id

NB: Entfernen Sie index.php in config.php sollte config [index_page] = "" sein.

NB: Beachten Sie den Unterschied in der letzten Zeile anstelle von $ 0, verwenden Sie $ 1

user3464848
quelle
das funktioniert bei mir. Antworten oben nicht. Ich habe die Antworten unten nicht getestet.
Jam Ville
Das hat bei mir funktioniert, aber ich musste das Uri-Protokoll von 'AUTO; zu 'REQUEST_URI' wie folgt: $ config ['uri_protocol'] = 'REQUEST_URI';
Isabelle Malt
RewriteRule .* index.php/$1 [PT,L]- Dies übergibt den URL-Pfad nur, wenn Sie das RewriteRule Muster von .*nach ändern (.*). Wenn Sie jedoch verwenden, $config['uri_protocol'] = 'REQUEST_URI';ist dies ohnehin irrelevant.
MrWhite
16

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]
Vinod
quelle
Dies ist bei weitem die beste und vollständigste Antwort. Unterordner ist das, was es besser macht als andere Antworten.
Bhavik Shah
Dies sollte die Antwort sein. Die abgestimmte Antwort mit dem Teil über: RewriteCond% {REQUEST_FILENAME}! -F RewriteCond% {REQUEST_FILENAME}! -D Das hat bei mir nicht funktioniert.
GunWanderer
11

Verwenden Sie dies auf Ihrem htaccess,

RewriteEngine On
RewriteBase /root_folder_name/
RewriteCond %{REQUEST_URI} ^system.*
RewriteCond $1 !^(index\.php|images|js|uploads|css|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Hoffe das hilft.

Yuvaraj Bathrabagu
quelle
root_folder_name -> hast du das mit deinem root ordnernamen geändert ??
Yuvaraj Bathrabagu
Ja, das habe ich gemacht. Ich habe dort meine Codeigniter-Wurzel abgelegt. Ist das korrekt?
Nihar Sarangi
Buddy Ich verwende diesen .htaccess-Code in zwei meiner CI-Projekte !! und beide funktionieren gut !!
Yuvaraj Bathrabagu
11

Es gibt zwei Schritte:

1) Bearbeiten Sie config.php

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

Zu

$config['index_page'] = '’;

2) Erstellen / Bearbeiten der .htaccess-Datei

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Shafi
quelle
6
  1. machen .htaccessDatei und setzen diesen Code

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

    $config['index_page'] = ''; 

index.phpVorhandenes in config.phpDatei entfernen

  1. Schreiben Sie von Ihrem Server aus weiter.
Siddharth Shukla
quelle
6

1.Erstellen Sie eine neue Datei .htaccess im Stammverzeichnis.

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

2. Gehen Sie zu Ihrer config.php-Datei und wechseln Sie von $config['index_page'] = 'index.php' zu$config['index_page'] = ''

Manish Sharma
quelle
6

Löste es mit 2 Schritten.

  1. Aktualisieren Sie 2 Parameter in der Konfigurationsdatei application / config / config.php
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
  1. Aktualisieren Sie die Datei .htaccess im Stammordner
<IfModule mod_rewrite.c>
    RewriteEngine On
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
Khachornchit Songsaen
quelle
5

versuchen Sie dieses. Es kann Ihnen helfen, wie es für mich arbeitet.

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

Fügen Sie den Code in Ihre Root-Datei htaccess ein und stellen Sie sicher, dass Sie ihn haben

$config['index_page'] = '';

in Ihrer Konfigurationsdatei.

Bitte lassen Sie mich wissen, wenn Sie auf ein Problem stoßen.

ABorty
quelle
Genau das habe ich getan.
Nihar Sarangi
4
+ Copy .htaccess from Application to Root folder
+ edit .htaccess and put

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /ci_test/

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #When your application folder isn't in the system folder
    #This snippet prevents user access to the application folder
    #Submitted by: Fabdrol
    #Rename 'application' to your applications folder name.
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    # Submitted by: ElliotHaughin

    ErrorDocument 404 /index.php
</IfModule>

Note: make sure your web server is enable for  "rewrite_module"

+ Remove index.php from $config['index_page'] = 'index.php';
- edit config.php in application/config
- search for index.php
change it from  $config['index_page'] = 'index.php'; to  $config['index_page'] = '';

Bitte schauen Sie sich diese Videos als Referenz an: https://www.youtube.com/watch?v=HFG2nMDn35Q

KH SolveCode
quelle
4

Nun, diese Antworten sind alle gut, aber für einen Neuling (der das erste Mal macht) sind diese verwirrend. Es gibt andere htaccess-Dateien, die sich im Controller befinden, aber wir müssen den htaccess im Hauptprojektordner bearbeiten oder hinzufügen.

Dies ist Ihr Codeigniter-Ordner, in dem sich Dateien wie Anwendungen, Systeme, Assets, Uploads usw. befinden.

Your_project_folder/
application/
assets/
cgi-bin/
system/
.htaccess---->(Edit this file if not exist than create it)
index.php

Ändern Sie diese Datei wie folgt:

<IfModule mod_rewrite.c>
  RewriteEngine On
  # !IMPORTANT! Set your RewriteBase here and don't forget trailing and leading
  #  slashes.
  # If your page resides at http://www.example.com/mypage/test1
  # then use RewriteBase /mypage/test1/
  # Otherwise /
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
  # If we don't have mod_rewrite installed, all 404's
  # can be sent to index.php, and everything works as normal.
  # Submitted by: Anand Pandey
  ErrorDocument 404 /index.php
</IfModule>

und ja, natürlich müssen Sie zwei Codezeilen in der Anwendung / config / config.php ändern

//find the below code   
$config['index_page'] = "index.php";
$config['uri_protocol'] ="AUTO" 
//replace with the below code
$config['index_page'] = "";
$config['uri_protocol'] = "REQUEST_URI";
Anand Pandey
quelle
Aus irgendeinem Grund funktionieren all diese Antworten bei mir nicht. Ich kann auf die Seiten zugreifen, wenn ich /index.php/ in der URL hinzufüge.
Bilal Ahmad
3

Sowohl Entwicklung als auch Produktion

    # Development
    RewriteEngine On
    RewriteBase /your_local_folder/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index\.php|images|scripts|styles|vendor|robots\.txt)
    RewriteRule ^(.*)$ index.php/$1 [L]

    #Production PHP5 CGI mode
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index\.php|images|scripts|styles|vendor|robots\.txt)
    RewriteRule ^(.*)$ index.php?/$1 [L]
cgwCode
quelle
3

Zunächst müssen Sie auf dem Apache-Server die Engine neu schreiben. Dieser Link hilft Ihnen dabei

http://www.anmsaiful.net/blog/php/enable-apache-rewrite-module.html

RewriteEngine On
RewriteBase /your_folder_name/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

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

Dies ist Ihre .htaccess-Datei. Probieren Sie es jetzt aus. Diese Einstellung funktioniert für mich.

vaibhav kulkarni
quelle
2

Sie können zur Datei config \ config.php gehen und den Wert index.php aus dieser Variablen entfernen

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

Erstellen Sie eine .htaccess-Datei und fügen Sie diesen Code ein.

<IfModule mod_rewrite.c>

 Options +FollowSymLinks

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

</IfModule>

gute Chance

abbas hussen
quelle
2
  Removing index.php from url of codeigniter   

Three steps are require to remove index.php from url in Codeigniter.

1)Create .htacess file in parallel to application holder and just copy past the following code:

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

2) Change $config['index_page'] to blank in config.php in application folder as below:

$config['index_page'] = '';

3) Enable rewrite_module of apache.
Pritam Chaudhari
quelle
1

Es sind nur drei Schritte erforderlich, um index.php aus der URL in Codeigniter zu entfernen

1) Erstellen Sie eine .htacess-Datei parallel zum Anwendungsinhaber und kopieren Sie einfach den folgenden Code:

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

2) Ändern Sie $ config ['index_page'] in config.php im Anwendungsordner wie folgt in leer:

$config['index_page'] = '';

3) Aktivieren Sie "rewrite_module" von Apache.

Starten Sie Ihren Apache neu und fertig.

Details: http://sforsuresh.in/removing-index-php-from-url-of-codeigniter-in-wamp/

Suresh Kamrushi
quelle
1

Ich denke, Ihre Einstellung ist gut, aber Sie tun, um Ihre htaccess-Datei falsch zu platzieren. Gehen Sie und fügen Sie Ihren htaccess Ihrer Projektdatei hinzu

Projektordner-> htaccess

und fügen Sie diesen Code Ihrem htaccess hinzu

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

Sie können zur Datei application \ config \ config.php gehen und index.php entfernen

 $ config ['index_page'] = 'index.php'; // index.php löschen

Ändern

 $ config ['index_page'] = '';

Rafiqul Islam
quelle
1

Probieren Sie diese RewriteEngine On aus

        # Removes index.php from ExpressionEngine URLs
        RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
Kashif
quelle
1

Das funktioniert bei mir. Getestet in Codeigniter 3.1.11, PHP 5.6.40 Ich verwende einen virtuellen Host in meiner Apache2-Konfiguration beim Testen des Servers.

<VirtualHost *:80>
     ServerAdmin [email protected]
     DocumentRoot (__DIR__)
     ServerName mydomain
     ##ErrorLog "logs/dummy-host2.example.com-error.log"
     ##CustomLog "logs/dummy-host2.example.com-access.log" common
     <Directory "(__DIR__)">
        Require all granted
        AllowOverride All
   </Directory>
</VirtualHost>

Und /.htaccess Inhalt

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

Befolgen Sie diese Schritte, um Ihr Problem zu lösen

1- Laden Sie die .htaccess-Datei von hier herunter: https://www.dropbox.com/s/tupcu1ctkb8pmmd/.htaccess?dl=0

2- Ändern Sie den CodeIgnitor-Verzeichnisnamen in Zeile 5. wie mein Verzeichnisname ist abc (füge deinen Namen hinzu)

3- Speichern Sie die .htaccess-Datei im Hauptverzeichnis (abc) Ihres Codeignitor-Ordners

4- Ändern Sie uri_protocol von AUTO in PATH_INFO in der Datei Config.php

Hinweis: Zunächst müssen Sie mod_rewrite von httpd.conf von apachi aktivieren, indem Sie die Kommentare entfernen

Salman Khan
quelle
0

Verwenden Sie diesen Code. Ändern Sie die 2. Zeile, sobald Sie Ihren Ordnernamen haben. Wo die Datei index.php und die Ordneranwendung liegen, liegt der Systemordner. Meistens treten Probleme aufgrund der zweiten Zeile auf. Wir konfigurieren nicht den Ordnernamen, in dem sich das Projekt befindet. Wichtig ist die 2. Zeile. Dies ist einfach, um die index.php zu entfernen. RewriteEngine auf RewriteBase / Projektordnername RewriteCond% {REQUEST_FILENAME}! -F RewriteCond% {REQUEST_FILENAME}! -D RewriteRule. * Index.php / $ 0 [PT, L]

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

Gehen Sie zur Datei controller / config.php.

config ['index_url'] = '';

Referenz für weitere Studien.

https://ellislab.com/expressionengine/user-guide/urls/remove_index.php.html

https://ellislab.com/blog/entry/fully-removing-index.php-from-urls

Hafiz Shehbaz Ali
quelle
0

Neben diesen Antworten kann man einfach index.php hinzufügen oder bearbeiten (falls es bereits vorhanden ist) - aus Sicherheitsgründen möchten Sie index.php trotzdem deaktivieren, indem Sie die Dateien in Ihrem Website-Verzeichnis auflisten - und dann den Inhalt in ändern

<?php
   header('location:your_required_starting.php'); 
?>
bennyhardjono
quelle
0

Kleinigkeit: (Optional)

Versuchen Sie, Ihren Apache neu zu starten, nachdem Sie den Status der Rewrite-Engine in vhosts as aktualisiert haben Rewrite ON.

Eine wichtige Sache zu beachten:

Überprüfen Sie in der Apache vhosts-Datei, ob Sie diese Skriptzeile haben. AllowOverride None Wenn ja, entfernen / kommentieren Sie diese Zeile.

Mein vhosts-Dateiskript: (Vorher)

<VirtualHost *:80>
    DocumentRoot "/path/to/workspace"
    ServerName ciproject
    ErrorLog "/path/to/workspace/error.log"
    CustomLog "/path/to/workspace/access.log" common
    Directory   "/path/to/workspace">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory> 
</VirtualHost>

Mein vhosts-Dateiskript: (Nach)

<VirtualHost *:80>
    DocumentRoot "/path/to/workspace"
    ServerName ciproject
    ErrorLog "/path/to/workspace/error.log"
    CustomLog "/path/to/workspace/access.log" common
    Directory   "/path/to/workspace">
        Options Indexes FollowSymLinks
        #AllowOverride None
        Order allow,deny
        Allow from all
    </Directory> 
</VirtualHost>

Ich hatte das gleiche Problem, kämpfte ungefähr einen Tag lang, alle waren in Ordnung. Später, durch Versuch und Irrtum Methode, fand dieses Ding. Nachdem ich dies entfernt hatte, war meine Arbeit erledigt. Die URL sucht jetzt nicht nach index.php :)

Lalith Kumar
quelle
0

Wenn alle oben genannten Lösungen nicht funktionieren, befinden sich in Ihrem Projektordner zwei Dateien index.html und index.php. Benennen Sie index.html in index_1.html um und durchsuchen Sie Ihr Projekt.

Mohsin Shoukat
quelle
0

Beachten Sie den Unterschied zum hinzugefügten "?" Zeichen nach ".php", insbesondere beim Umgang mit CodeIgniter:

RewriteRule ^ (. *) $ Index.php / $ 1 [L]

vs.

RewriteRule ^ (. *) $ Index.php? / $ 1 [L]

Es hängt von mehreren anderen Dingen ab. Wenn es nicht funktioniert, probieren Sie die andere Option!

eyal_katz
quelle
0

Sie können index.php aus der URL entfernen, indem Sie Code in .htaccess einfügen

Dateipfad: root> .htacess

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


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

Hoffe es wird funktionieren.

Rokan Nashp
quelle
0

In CodeIgniter 3.16 wird htaccess verwendet

Entfernen Sie die Datei index.php

& ebenfalls

Leiten Sie HTTP zu HTTPS um

Folgen sind die Codes:

  • gehe zur application\config\config.phpDatei

Nehmen Sie Änderungen vor

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

Zu

$config['index_page'] = '';
  • Öffnen Sie nun die .htaccess-Datei und aktualisieren Sie die folgenden Codes
RewriteEngine on
RewriteBase /

## Redirect SSL
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

## Remove fron url index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^/(index\.php|assets/|humans\.txt)
RewriteRule ^(.*)$ index.php/$1 [L] 
Chandan Sharma
quelle