Apache: RewriteRule suppression de points de fuite
-
19-09-2019 - |
Question
Voici mes règles .htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*)/(.*)$ index.php?var1=$1&item=$2&var2=%{REQUEST_URI} [NC,L]
RewriteRule ^(.*)$ index.php?var1=$1 [NC]
Voici une URL (avec un point de fuite à la fin):
http://localhost/test/secondvar.
Le problème est que le point de fuite ne vient pas à l'intérieur de la variable var2
de GET
J'ai utilisé un print_r($_GET)
et est ici le résultat avec l'URL ci-dessus:
Array ( [var1] => test [var2] => secondvar [uri] => /test/secondvar. )
Alors, ma question est, comment puis-je obtenir que point à la fin de l'URL en tant que paramètre var? Comme vous pouvez le voir, la REQUEST_URI
montre que le apache connaît le point.
Je sais que je ne peux pas envoyer les chemins en tant que paramètres de GET
et de prendre soin de lire les chemins dans l'URI de PHP, mais je voudrais savoir pourquoi le point ne vient pas et comment y remédier, si je trop compliqué plutôt opter pour la solution PHP directe.
EDIT: non seulement point à la fin, mais en fin? trop ... = [
La solution
Il est peut-être que php exclut les points de fuite. Je sais qu'ils convertissent souvent les points sur en POST / GET à underscores. Je voudrais juste faire
explode('/',$_SERVER['REQUEST_URI'])