Utilisation de mod_rewrite pour convertir les chemins avec pommes de caractères dans les chaînes de requête

J'ai un projet PHP où je dois envoyer un dièse (#) dans le chemin d'accès d'URL. (http://www.example.com/parameter#23/parameter#67/index.php) J'ai pensé que urlencode permettrait, de convertir le hachage %23

Mais maintenant je vois que même le urlencoded de hachage force le navigateur à tout traiter à la droite, comme le fragment d'URL (ou de la requête).

Est-il un moyen de passer un hachage à travers, ou dois-je faire une substitution de caractères avant urlencode?

Modifier pour ajouter (19 sept. à 2017):

Il s'avère que j'ai été poser la mauvaise question. Mon problème n'était pas avec l'aide de la table de hachage de caractères dans le chemin d'accès (encodage ça fonctionne), mais dans l'utilisation de mod_rewrite pour le convertir à une chaîne de requête. J'avais omis de le ré-encoder dans la règle de réécriture. Je vais modifier le titre de match.

Ici est la règle de réécriture, j'ai été en utilisant:

RewriteEngine On
# convert path strings into query strings
RewriteRule "^(.*)/(.*)/hashtags.php"      /hashtags.php?parameter_1=$1&parameter_2=$2 [QSA,L]

Dès que j'ai ajouté le B tag, il a fonctionné correctement:

RewriteEngine On
# convert path strings into query strings
RewriteRule "^(.*)/(.*)/hashtags.php"      /hashtags.php?parameter_1=$1&parameter_2=$2 [QSA,L,B]
  • De quelle manière utilisez-vous que l'URL?
  • Je crois urlencode devrait changer cela pour l' %23, pouvez-vous fournir un exemple de code?
  • Je suis en créant des liens statiques pour créer dynamiquement des fichiers Pdf. Je suis en utilisant modrewrite pour passer le chemin d'éléments en $_GET. Ils sont le produit parrameters nécessaires pour créer le PDF. Certains de ces produits ont des balises de hachage dans les noms de produits.
  • Le hachage est un caractère réservé, et des navigateurs web les traiter de cette façon, peu importe quoi. Il n'a pas d'importance si vous encodez parce que l'interprétation sera le même. Est-il une autre caractère que vous pouvez utiliser?
  • Jeremy: Oui, après un peu plus de tests, je me rends compte que c'est le navigateur qui fait ça. Si je contourner le navigateur et juste dire à PHP d'interpréter deux Url (l'un avec la fonction urlencode, et l'autre sans), il analyse l'URL encodée parfaitement. Je vais devoir faire une substitution, avant la création de l'URL. Merci!
InformationsquelleAutor Mark | 2011-02-10