2017-10-14 5 views
0

Je le fichier .htaccess suivanthtaccess rewrite passe toujours nom au lieu d'URL réelle

RewriteEngine on 
RewriteRule ^(.*)/?$ index.php?file=$1 [L] 

donc j'attendre à transmettre mysite.com/foobar à mysite.com/index.php?file=foobar
J'ai le fichier index.php suivant

<?php 
    var_dump($_GET); 
?> 

peu importe l'URL que j'appelle (mysite.com, mysite.com/foobar, mysite.com/test), la sortie de index.php est toujours

array(1) { ["file"]=> string(9) "index.php" } 

alors que j'attends un

array(1) { ["file"]=> string(0) "" } 
array(1) { ["file"]=> string(6) "foobar" } 
array(1) { ["file"]=> string(4) "test" } 

$ _SERVER [ 'QUERY_STRING'] retourne également "file = index.php"

Je ne pense pas que tout autre fichier htaccess sont impliqués, lorsque J'écris des caractères aléatoires dans le fichier .htaccess Je reçois une erreur interne du serveur (comme prévu) et si je change le nom du paramètre "fichier" ou change le nom du fichier "index.php" en "test.php" le le problème reste le même (affichant test.php au lieu de index.php)

Répondre

0

quelques bits. Essayer:
Correspondances tous les personnages:

RewriteRule ^/?([.*])$ \index.php?file=$1 [L] 

Si vous ne devez faire correspondre les caractères alpha:

RewriteRule ^/?([a-z]+)$ \index.php?file=$1 [L] 

Si vous voulez vous rendre la vie plus facile utiliser ceci: http://www.generateit.net/mod-rewrite/index.php Ou si vous voulez En savoir plus sur regex: https://www.princeton.edu/~mlovett/reference/Regular-Expressions.pdf

+0

Ce code affiche array (0) {} lorsque j'appelle mysite.com ou mysite.com/index.php, mais renvoie 404 non trouvé pour les appels comme mysite .com/foobar – SackZement

+0

a corrigé les fautes de frappe, va corriger le formatage maintenant. – Erik

+1

La première règle entraîne toujours la même erreur 404, mais la seconde fonctionne très bien pour mon but. Merci. – SackZement