J'ai un problème en raison duquel Google a indexé certaines pages avec la mauvaise URL.
L'URL qu'ils indexent est:
http://www.example.com/index.php/section1/section2
J'en ai besoin pour rediriger vers:
http://www.example.com/section1/section2
.htaccess n'est pas mon fort, donc toute aide serait très appréciée.
Merci d'avance.
C'est la règle de base pour masquer index.php
de l'URL. Mettez ceci dans votre fichier racine .htaccess
.
mod_rewrite
doit être activé avec PHP et cela fonctionnera pour la version PHP supérieure à 5.2.6.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
Pour supprimer index.php
de l'URL et rediriger le visiteur vers la version non-index.php de la page:
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
Cela redirigera proprement /index.php/myblog
vers simplement /myblog
.
L'utilisation d'une redirection 301 préservera le classement dans les moteurs de recherche Google.
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ |\?)
RewriteRule ^ /%1 [R=301,L]
En supposant que l'URL existante est
http://example.com/index.php/foo/bar
et nous voulons le convertir en
http://example.com/foo/bar
Vous pouvez utiliser la règle suivante:
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]
Dans le spep # 1, nous comparons d'abord la chaîne de requête et capturons tout après le /index.php/ et la valeur capturée est enregistrée dans% 1 var. Nous envoyons ensuite le navigateur à une nouvelle URL . Le n ° 2 traite la demande en interne. Lorsque le navigateur arrive à/foo/bar , # 2rule réécrit la nouvelle URL dans la position originale.
Suivez les étapes suivantes
1. Assurez-vous que le module d'hébergement/votre ordinateur mod_rewrite est actif. s'il n'est pas actif, essayez de l'activer en quelque sorte, ouvrez le fichier httpd.conf. Vous pouvez vérifier cela dans le phpinfo.php pour le savoir.
changer ce réglage:
#LoadModule rewrite_module modules/mod_rewrite.so
être et redémarrer wamp
LoadModule rewrite_module modules/mod_rewrite.so
2. Ensuite, allez dans le fichier .htaccess, et essayez de modifier pour être:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]
Si ce qui précède ne fonctionne pas, essayez avec:
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. Déplace le fichier .htaccess vers le répertoire racine, où se trouve index.php.
www OR root folder
- index.php
- .htaccess
Des mesures pour supprimer index.php de l'URL de votre site web wordpress.
<?php phpinfo?(); ?>
Exécutez maintenant ce fichier - www.votresite.com/phpinfo.php et il affichera mod_rewrite dans la section Charger les modules . Si non activé, exécutez les commandes ci-dessous sur votre terminal.
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>
Faites ensuite en sorte que .htaccess reçoive l’autorisation 666 pour qu’elle devienne accessible en écriture et que vous puissiez maintenant modifier votre permalien wordpress.
Maintenant, allez dans Paramètres -> permaliens -> et passez au format d’URL souhaité. Supprimez ce code /index.php/%year%/%monthnum%/%day%/%postname%/et insérez ce code dans la structure personnalisée: /% postname% /
Si toujours pas réussi alors vérifiez votre hébergement, le mien était serveur digitalocean, donc je l'ai effacé moi-même
Edité le fichier /etc/Apache2/sites-enabled/000-default.conf
Ajout de cette ligne après DocumentRoot/var/www/html
<Directory /var/www/html> AllowOverride All </Directory>
Redémarrez votre serveur Apache
Remarque:/var/www/html sera la racine de votre document
Cela fonctionnera, utilisez le code suivant dans le fichier .htaccess 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]
Certains peuvent obtenir un 403 avec la méthode indiquée ci-dessus à l'aide de mod_rewrite. Une autre solution pour rewite index.php out est la suivante:
<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>