2010-11-06 8 views
1

J'ai cherché partout cette réponse, et les réponses qui ont été postées ne correspondent pas à ma situation spécifique car elle me donne des erreurs 404, et je ne sais pas pourquoi.Préserver les doubles barres obliques dans mod_rewrite

Je suis en train de réécrire ceci: /c.php?url=http://www.example.com

Dans ceci: /c/http://www.example.com

En ce moment j'ai dans mon mod_rewrite:

RewriteEngine on 
RewriteRule ^c/(.*)(/)?$ /c.php?url=$1 

Mais quand il réécrit l'URL que je suis en train pour envoyer dans le script PHP, il écrit "http:/example.com", avec une barre oblique au lieu de la double barre oblique.

J'ai vu beaucoup de choses postées à ce sujet impliquant la règle THE_REQUEST, mais quand j'essaie de les appliquer à mon fichier htaccess, elles échouent. Je ne suis pas sûr de ce qui ne va pas, toute aide serait très appréciée. Apache supprime plusieurs barres obliques à l'intérieur du chemin.

Répondre

2

Et comme vous l'avez mentionné, vous pouvez résoudre ceci en contrôlant la ligne de demande en THE_REQUEST:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /c/([^?\ ]+)/? 
RewriteRule ^c/ /c.php?url=%1 
+0

Merci, Gumbo. Je devais ajouter un + dans le/c/([^? \] +) /? pour permettre plus d'un caractère, mais cela fonctionne bien, bien que je sois nouveau à mod_rewrite et j'ai du mal à déchiffrer comment fonctionne la commande THE_REQUEST ... Aussi, est-il possible de conserver des points d'interrogation dans l'URL cela est envoyé aussi bien? Merci! – boomboom

+0

@boomboom: * LE \ _REQUEST * représente la [ligne de requête] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1). Et si vous voulez obtenir le chemin d'accès complet et la chaîne de requête, il est probablement plus facile de l'obtenir directement dans * c.php * depuis '$ _SERVER ['REQUEST_URI']'. – Gumbo

Questions connexes