2010-08-27 8 views
11

Die Frage ist ziemlich einfach, aber ich war nicht in der Lage, eine Antwort für Stunden jetzt zu finden.muss entkommen # (Hash/Pound) Zeichen in .htaccess Rewrite-Regel

Was ich tun muß, ist:

RewriteRule ([^#])#(.*) $1\%23$2 

was im Grunde bedeutet Ich will die freaking Raute mit url zu entkommen, die von einem externen Codpiece zu mir kommt.

Backslash (\) funktioniert nicht, dieses Zeichen zu entkommen ... und bitte nicht vorschlagen %23 statt # verwenden, weil es nicht so gut funktioniert.

(%2 3 keine # überein, da es nicht einfach ist == %23)

Antwort

7

Der Hash-Teil eines URL zum Umschreiben nicht verfügbar ist. Wenn ein Webbrowser eine URL-Anfrage an einen Webserver sendet, sendet er alles an das Hash-Zeichen. Der Hash ist nur auf dem Client verfügbar (z. B. JavaScript-Code kann ihn sehen).

+0

Dies ist kein Weg zu entkommen #, aber anscheinend in meinem Fall ist es egal. Also ich bin gonno gehen Sie voran und setzen Sie dieses als akzeptiert. danke – kali

+2

Es stimmt zwar, dass der Teil nach dem # in der Anfrage-URL nicht verfügbar ist, Sie können ihn jedoch als Teil der Weiterleitungs-URL verwenden. Sie müssen nur entkommen mit der NE-Option, die in einer anderen Antwort erwähnt wird. –

+1

@PeterDolberg @Keith Bei der Frage geht es darum, ein '#' im Muster zu finden. Die andere Antwort kann Leuten helfen, die diese Frage von Google finden, aber es ist keine gültige Antwort auf diese spezielle Frage. "NE" ist hier nicht relevant, und meine Antwort ist nicht "flat-out wrong". –

-2

.htaccess

RewriteRule old\.php redirect.php?url=http://example.com/new.php|hash [R=301,QSA,L] 

redirect.php

<?php 
    $new_url = str_replace("|", "#", $_GET['url']); 
    header("Location: ".$new_url, 301); 
    die; 
?> 
23

Ich habe gerade diese nach ein paar Beiträge in diesem Forum für eine Website arbeiten, ich bin entkommen und 301 R = kein Schreibregel mit NE mit Umleitung Optionen:

RewriteRule ^galleries/([a-zA-Z0-9_-]+)$ /gallery.html#/$1 [R=301,NE,L] 

Diese leitet alle Galerien/variable-/gallery.html#/variable

Edit: der wichtige Teil der Regel ist NE, die den Server ohne entweichende Zeichen zu analysieren Ausgabe anweist. Ohne dies wird es versuchen, das # in der Rewrite-Regel zu umgehen, nach der das OP fragt.

+1

Bitte erläutern Sie, anstatt nur ein Beispiel zu geben – johannes

+4

Während diese Antwort nützliche Informationen enthält, scheint sie sich nicht auf die Frage des OP zu beziehen, wie vorgeschlagen. Das OP versucht, eine '#' in der RewriteRule _pattern_ zu finden, während die obige Antwort eine '#' (Fragmentkennung) in der RewriteRule _substitution_ verwendet. Das ist ganz anders. – MrWhite

+0

@ w3dk, das OP sagt: "Ich möchte dem verdammten Hasch Zeichen url entkommen." Du machst das mit NE. – Dave

Verwandte Themen