Utilisation de .htaccess Je souhaite transformer% {PATH_INFO} en un paramètre de chaîne de requête pour l'amorçage. Mais je veux empêcher les visiteurs d'entrer manuellement le paramètre bootstrap.Suppression de certains paramètres de chaîne de requête SAUF si elle a été ajoutée par réécriture
Donc, c'est entré URL: www.example.com/user/pictures?id=65
affiche fait: www.example.com?bootstrap=/user/pictures & id = 65
MAIS si manuellement entré
Cette URL: est entrée www.example.com?bootstrap=/user/pictures & i d = 65
éradique: www.example.com?id=65
Ou affiche une erreur: 404: not found
Meilleur scénario
manuellement bootstrap entré est ignoré ET% {PATH_INFO} devient un nouveau paramètre.
donc ceci: www.example.com/user/pictures?id=65 & bootstrap = somecrap
Affiche: www.example.com?id=65 & bootstrap =/user/images
Il existe deux raisons pour bloquer un paramètre bootstrap saisi manuellement. 1) Sécurité. Nous ne voulons pas que les utilisateurs fassent la chasse aux fichiers qui ne sont pas destinés à être affichés. 2) Les conflits. Nous ne voulons pas choisir entre un bootstrap saisi manuellement et le% {PATH_INFO} correct.
La suppression du paramètre bootstrap est facile. Quelque chose comme ...
RewriteCond %{QUERY_STRING} ^(.*&)?bootstrap=[^&]*(?:&(.*))?$ [NC]
RewriteRule^%{REQUEST_URI}?%1%2 [L,NE]
Ajouter le paramètre est facile. (Le mien est plus compliqué, mais cela montre l'idée.)
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI}%{PATH_INFO} (.*?)(/.+)\2$
RewriteRule ^(.*)$ /%1?bootstrap=%2 [QSA,L]
Si htaccess juste couru à travers une fois, ces deux extraits feraient l'affaire. Mais à la place, htaccess redémarre après chaque réécriture et mon paramètre bootstrap ajouté est à nouveau supprimé.
Je sais que le correctif quick-n-dirty serait d'ajouter [END] à la deuxième règle, mais cela ne marchera pas ici.
Ce dont j'ai besoin est un moyen de supprimer? "Bootstrap = xxx" UNIQUEMENT de la demande originale et non de la demande réécrite.
Merci
Très bon usage de 'REDIRECT_QUERY_STRING' ++ – anubhava