Essayez si vous voulez simplement faire des fichiers php.
RewriteEngine on
RewriteRule (.*)\.php$ /index.php?$1 [L]
Pour clarifier ce que ma réponse fait. Il vous donne des URL plus conviviales qui ressemblent à ce que vous demandiez.
Donc vous pouvez utiliser localhost/hello.php
et ce sera internally
rediriger vers /localhost/index.php?hello
. En interne signifie qu'ils ne verront jamais localhost/index.php?hello
et verront toujours localhost/hello.php
dans leur navigateur.
Vous pouvez faire n'importe quelle URL et il va réécrire dans un fichier php. par exemple. localhost/index.php?newpage
et vous pouvez utiliser /localhost/newpage.php
Espérons que ce soit plus clair.
EDIT
Vous voulez le contraire, mais je ne sais pas comment votre PHP est construit, mais les chaînes de requête sont généralement paires champ/valeur. Par exemple name=john
, page=contact
, action=hello
etc. Vous avez index.php?hello
mais hello
n'a pas de contenu ou de valeur.
C'est probablement la raison pour laquelle vous avez du mal à réécrire votre URL. L'utilisation de $_GET
nécessiterait une valeur.
Alors, que je le ferais faire, est si votre URL est comme ceci en utilisant des paires champ/valeur
index.php?action=hello
Puis dans le fichier index.php que vous pourriez faire quelque chose comme
$action = $_GET["action"];
if($action == "hello"){
//show contents of hello, include a page or whatever
}
Une fois que vous avez de bonnes URL, il serait facile de le réécrire.
Donc, si l'URL que vous souhaitez afficher est comme
index.php?action=hello
et que vous souhaitez rediriger vers hello.php
Votre .htaccess ressemblerait à ceci
RewriteRule ^action=([^/]+) /$1.php [R,L]
Ce redirigerez à le fichier php. Si vous ne voulez pas afficher la redirection et la garder en interne, vous pouvez supprimer le drapeau R
et conserver [L]
.
Personnellement, je ne veulent pas voulez l'utilisateur de voir des chaînes de requête très long exemple d'URL. mysite.com?page=music&artist=someartist&title=sometitle
Donc, toutes mes URL sont réécrites pour être plus courtes et plus conviviales comme ma réponse originale.
s'il vous plaît clarifier pour moi, voulez-vous hello.php être montré sur 'index.php? hello' url? – vladkras
oui, je veux hello.php montrer comme index.php? Bonjour quand je clique sur un lien vers cette page – learntosucceed
Vous voulez montrer 'hello.php' dans la barre d'adresse mais être envoyé à' index.php? Hello'? Si vous essayez de créer des URL conviviales, avez-vous vérifié ma réponse? –