2017-09-21 1 views
0

Je veux réécrire l'URL suivante:réécriture d'URL pour les sous-répertoire sans base changer

https://www.example.com/tools/tool.php?id=predict-backlinks 

Pour:

https://www.example.com/tools/predict-backlink 

Comme suggéré ici: URL Rewriting for sub-folder

Maintenant, l'URL de travail est https://www.example.com/tools/tool/predict-backlink

Le code suivant fonctionne bien mais tool est ajouté dans l'URL. Je veux que cela fonctionne sans tool dans l'URL.

Options -MultiViews 
RewriteEngine On 
RewriteBase /tools/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^tool/(.*) tool.php?id=$1 [L] 
+0

Avez-vous essayé d'exécuter cette commande: a2enmod réécrire –

Répondre

0

Cette règle devrait le faire pour vous:

RewriteEngine On 
RewriteCond %{QUERY_STRING} id=(.+) [NC] 
RewriteRule ^(.*)$ https://www.example.com/tools/%1? [R=301,NC,L] 

Ce que ceci est saisit votre requête id= et en utilisant le RewriteRule ajoutera ceci sur la fin de votre URL à l'aide %1.

Le ? est là pour empêcher la requête d'origine d'apparaître également à la fin. La réécriture complète est effectuée en utilisant la redirection 301.

Assurez-vous de vider le cache avant de tester le.

EDIT:

Merci pour la question, la mise à jour beaucoup plus claire maintenant. La raison pour laquelle il ajoute tool/ est à cause de cette partie de votre préfixe RewriteRule ^tool/(.*). Vous l'ajoutez vous-même.

Il suffit de supprimer tool/ de la RewriteRule et il devrait fonctionner sans ajouter tool.

RewriteRule ^(.*) tool.php?id=$1 [L] 
+0

ne fonctionnait pas lorsqu'il est ajouté dans le sous-répertoire –

+0

que vous avez défini '' AllowOverride none' à AllowOverride all' oui? – Lag

+0

J'ai mis à jour la question. –