J'essaie d'appliquer des règles de réécriture simples à l'aide de fichiers htaccess. J'héberge cette page sur localhost en utilisant XAMPP :
localhost/naveesh/services.php
Les moyens possibles pour demander cette opération sont les suivants :
localhost/naveesh/services?serv=Boat%20Dealers
Ce que je veux faire, c'est réécrire la demande pour l'URL suivante vers l'URL ci-dessus
localhost/naveesh/services/Boat-Dealers
J'ai essayé ceci mais cela m'a donné une erreur 404.
RewriteEngine On RewriteRule ^/naveesh/services/([^/]+)/?$ /naveesh/services.php?serv= [L,QSA]
Après quelques recherches, j'ai essayé une autre option :
RewriteEngine On RewriteBase /naveesh/ # Hide .php extension RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*?)/?$ .php [L] RewriteRule ^services/([^/]+)/?$ /services.php?serv= [L,QSA]
Cependant, il y a trop de problèmes de redirection interne maintenant
C'est votre première règle ("Masquer l'extension .php") qui provoque "Trop de redirections internes" car elle ne fait (à tort)
services/Boat-Dealers.php
的请求重写为 services/Boat-Dealers.php.php 等。这是因为条件(始终成功)没有检查您最终重写的内容。REQUEST_FILENAME
pas ce que vous attendez. (Bien qu'inverser l'ordre de ces règles résout ce problème immédiat.)Veuillez consulterMon commentaire sur ce qui suitProblème sur ServerFault Plus de détails sur ce problème spécifique.
Cependant, la deuxième règle est également incorrecte (comme indiqué dans @Réponse de Faizal).
Les règles sont également dans le mauvais ordre.
Supposons que votre
.htaccess
文件位于/naveesh/.htaccess
(不是文档根目录),那么您的完整.htaccess
fichier ressemble à ceci :Notez que le préfixe remplacement slash sur la chaîne a été supprimé.
La directive
relatif est relatif au répertoire où se trouve le fichierRewriteBase
n'est pas nécessaire ici. LeRewriteBase
指令。相对替换是相对于.htaccess
remplacement.htaccess
.MultiViews
,因为如果禁用,此规则将无法按预期工作。该请求将被重写为services.php
,但不包含serv
Vous devez vous assurer de désactiver les