it-swarm.com.de

htaccess entfernt index.php von der URL

Ich habe ein Problem, bei dem Google einige Seiten mit der falschen URL indiziert hat.

Die URL, die sie indizieren, lautet:

http://www.example.com/index.php/section1/section2

Ich brauche es, um weiterzuleiten:

http://www.example.com/section1/section2

.htaccess ist nicht meine Stärke, daher wäre jede Hilfe sehr dankbar.

Danke im Voraus.

41
Nick

Dies ist die Grundregel, um index.php vor der URL zu verbergen. Fügen Sie dies in Ihre .htaccess-Stammdatei ein.

mod_rewrite muss mit PHP aktiviert werden. Dies funktioniert für die Version PHP höher als 5.2.6.

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

So entfernen Sie index.php von der URL und leiten den Besucher zur nicht-index.php-Version der Seite um:

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

Dies wird /index.php/myblog einfach auf /myblog umleiten.

Bei Verwendung einer 301-Weiterleitung werden die Rankings der Google-Suchmaschinen beibehalten.

41
Bradley Flood
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ |\?)
RewriteRule ^ /%1 [R=301,L]
17
Steve Bals

Angenommen, die vorhandene URL ist 

http://example.com/index.php/foo/bar

und wir wollen es in konvertieren

 http://example.com/foo/bar

Sie können die folgende Regel verwenden:

RewriteEngine on
#1) redirect the client from "/index.php/foo/bar" to "/foo/bar"
RewriteCond %{THE_REQUEST} /index\.php/(.+)\sHTTP [NC]
RewriteRule ^ /%1 [NE,L,R]
#2)internally map "/foo/bar" to "/index.php/foo/bar"
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ /index.php/$1 [L]

In Schritt 1 passen wir zuerst gegen die Anforderungszeichenfolge und erfassen alles nach der /index.php/ und der erfasste Wert wird in% 1 var gespeichert. Dann senden wir den Browser an eine neue URL . Die # 2 verarbeitet die Anfrage intern. Wenn der Browser bei/foo/bar ankommt, schreibt # 2rule die neue URL in den ursprünglichen Speicherort.

8
starkeen

Führen Sie die folgenden Schritte aus

1. Stellen Sie sicher, dass das Hosting/Ihr PC-Mod_rewrite-Modul aktiv ist. Wenn dies nicht der Fall ist, aktivieren Sie die Datei httpd.conf. Sie können dies in der phpinfo.php nachlesen.

Ändern Sie diese Einstellung:

#LoadModule rewrite_module modules/mod_rewrite.so

wamp sein und neu starten

LoadModule rewrite_module modules/mod_rewrite.so

2. Dann gehe zur .htaccess-Datei und versuche zu ändern:

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

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

wenn oben nicht klappt, probiere es mit:

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

3. Verschiebe die .htaccess-Datei in das Stammverzeichnis, wo sich dort index.php befindet.

www OR root folder
- index.php
- .htaccess
4
Kailas

Schritte zum Entfernen von index.php von der URL für Ihre WordPress-Website.

  1. Überprüfen Sie, ob Sie mod_rewrite auf Ihrem Server aktiviert haben. Um zu überprüfen, ob sie aktiviert ist oder nicht - Erstellen Sie eine Datei phpinfo.php in Ihrem Stammordner mit dem folgenden Befehl.
  <?php
    phpinfo?();
  ?>

Führen Sie nun diese Datei aus - www.yoursite.com/phpinfo.php. Dort wird mod_rewrite im Abschnitt zum Laden von Modulen angezeigt. Wenn dies nicht aktiviert ist, führen Sie die folgenden Befehle an Ihrem Terminal aus. 

Sudo a2enmod rewrite
Sudo service Apache2 restart
  1. Stellen Sie sicher, dass Ihre .htaccess-Datei in Ihrem WordPress-Stammordner vorhanden ist. Falls nicht, erstellen Sie eine .htaccess-Datei Fügen Sie diesen Code in Ihre .htaccess-Datei ein: - 
 <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
  1. Erlauben Sie weiterhin .htaccess to 666, damit es schreibbar wird und Sie jetzt Änderungen in Ihren Wordpress-Permalinks vornehmen können. 

  2. Gehen Sie nun zu Einstellungen -> Permalinks -> und wechseln Sie zu Ihrem gewünschten URL-Format. Entfernen Sie diesen Code /index.php/%year%/%monthnum%/%day%/%postname%/ und fügen Sie diesen Code in die benutzerdefinierte Struktur ein: /% postname% / 

  3. Wenn es immer noch nicht erfolgreich war, überprüfen Sie Ihr Hosting, mein Server war Digitalocean, also habe ich es selbst gelöscht

Die Datei /etc/Apache2/sites-enabled/000-default.conf wurde bearbeitet

Diese Zeile wurde nach DocumentRoot/var/www/html hinzugefügt

    <Directory /var/www/html>
    AllowOverride All
    </Directory>

Starten Sie Ihren Apache-Server neu

Hinweis:/var/www/html ist Ihr Dokumentenstamm 

2
kandysingh

Dies funktioniert, verwenden Sie den folgenden Code in der .htaccess-Datei. RewriteEngine On

# Send would-be 404 requests to Craft
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/(favicon\.ico|Apple-touch-icon.*\.png)$ [NC]
RewriteRule (.+) index.php?p=$1 [QSA,L]

0
Talib Ali

Einige können mit der oben aufgelisteten Methode unter Verwendung von mod_rewrite einen 403 erhalten. Eine andere Lösung, um index.php neu zu schreiben, ist folgende:

<IfModule mod_rewrite.c> 

RewriteEngine On

# Put your installation directory here:
RewriteBase /

# Do not enable rewriting for files or directories that exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

</IfModule> 
0
toystory

Für weitere Informationen und Codeigniter-Tutorial

erstellen Sie eine .htaccess-Datei im Stammverzeichnis des Projekts und fügen Sie den folgenden Code zum Entfernen von index.php ein

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

Ich habe viele Codes aus den oben genannten Abschnitten verwendet, um index.php von der Basis-URL zu entfernen. Aber es funktionierte nicht von meinem Ende. Sie können also diesen Code verwenden, den ich verwendet habe und der ordnungsgemäß funktioniert.

Wenn Sie index.php wirklich von der Basis-URL entfernen müssen, geben Sie diesen Code einfach in Ihren htaccess ein.

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]

RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
0
Abhisek Saha