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.
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]
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.
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ |\?)
RewriteRule ^ /%1 [R=301,L]
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.
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
Schritte zum Entfernen von index.php von der URL für Ihre WordPress-Website.
<?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
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
Erlauben Sie weiterhin .htaccess to 666, damit es schreibbar wird und Sie jetzt Änderungen in Ihren Wordpress-Permalinks vornehmen können.
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% /
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
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]
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>
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]
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]