besoin d'évasion dièse ( # ).règle de réécriture htaccess
la question est assez simple mais je n'ai pas pu trouver de réponse depuis des heures.
Ce que je dois faire c'est:
RewriteRule ([^#])#(.*) %23
ce qui veut dire que je veux que l'url échappe au signe de hachage qui me vient d'un codepiece externe.
barre oblique inverse () ne fonctionne pas pour échapper à ce signe... et s'il vous plaît ne pas suggérer à l'aide de
%23
au lieu de #
parce que ça ne marche pas aussi bien.
(%2
3 ne correspond pas à un #
parce que il n'est tout simplement pas == %23
)
4 réponses
la partie hachage d'une URL n'est pas disponible pour réécriture. Lorsqu'un navigateur Web envoie une demande D'URL à un serveur web, il envoie tout jusqu'au signe de hachage. Le hachage n'est disponible que sur le client (par exemple le code JavaScript peut le voir).
je viens d'obtenir ce travail pour un site à la suite de quelques messages sur ce forum, j'utilise une règle de réécriture Avec NE not escape et R=301 redirect options:
RewriteRule ^galleries/([a-zA-Z0-9_-]+)$ /gallery.html#/ [R=301,NE,L]
cela redirige tout galeries / variable/la galerie.html# / variable
Edit: la partie importante de la règle est NE qui demande au serveur d'analyser la sortie sans échapper aux caractères. Sans cela, il tentera d'échapper à la règle # in the rewrite qui est ce que L'OP se pose au sujet de.
Recherche Redirection Prolongéehttp://httpd.apache.org/docs/2.0/misc/rewriteguide.html . Il y a une bonne solution pour votre question.
.htaccess
RewriteRule old\.php redirect.php?url=http://example.com/new.php|hash [R=301,QSA,L]
redirection.php
<?php
$new_url = str_replace("|", "#", $_GET['url']);
header("Location: ".$new_url, 301);
die;
?>