2017-05-09 2 views
2

Ich benutze codeigniter. Es gibt immer eine Möglichkeit, index.php von URL zu entfernen. Der Code folgt für htaccess und es funktioniert gut.wie man index.php durch htaccess entfernt [Advanced]

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

Aber das PROBLEM ist: Wir können weiterhin die Website mit index.php wie folgende URLs zugreifen.

Beide sind:

http://www.yoursite.com/index.php/cat/subcat 
http://www.yoursite.com/cat/subcat 

eine erzwungene Entfernung von index.php ist möglich durch htaccess? Ich will nicht, dass Google beide Kopien der gleichen Seite hat. Jeder Vorschlag wird

begrüßt
+0

Würde die Seite noch funktionieren, wenn Sie eine 301-Weiterleitung von 'index.php/was auch immer'-URIs an den'/was auch immer'-URI erzwingen? Oder würde das eine unendliche Umleitung in Apache verursachen? * Nicht sicher * – rickdenhaan

+0

301 Weiterleitung bewirkt Endlosschleife. – danny

Antwort

3

Versuchen Sie Folgendes an der Spitze Ihrer .htaccess Datei:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php 
RewriteRule ^index\.php/?(.*) /$1 [R=302,L] 

Diese prüft, ob /index.php existiert auf dem ursprünglichen Antrag (nicht nur die umgeschriebene Anfrage) und leitet dann zum URL-Pfad das folgt, wenn es ist. Durch gezielte Überprüfung gegen THE_REQUEST vermeiden Sie eine Umleitungsschleife.

Der Schrägstrich ist optional, daher werden auch Anforderungen für /index.php abgefangen.

Ändern Sie die 302 (vorübergehend) zu 301 (permanent), wenn Sie sicher sind, dass es funktioniert OK.

Verwandte Themen