Apache – Ist es möglich, URLs basierend auf Fragmenten (Hashtags) umzuschreiben?

Apache – Ist es möglich, URLs basierend auf Fragmenten (Hashtags) umzuschreiben?

Verwenden von Apache/2.4.54 (Win64)

Ich wurde gebeten, die alte Domäne wie folgt auf die neue umzuschreiben

  • Aushttps://oldtest.mydomain.com/company/customerpage/#/customer/<getThisNumber>/something
  • Zuhttps://newtest.mydomain.com/company/something/customer/<getThisNumber>

Es hätte auch funktionieren können, die Nummer mit regulären Ausdrücken zu erfassen, an das neue System weiterzugeben und dann einfach mit [L,R=301] umzuleiten.

Aber Ref.dieser Beitrag auf StackOverFlow

Ich weiß, dass der Hashtag ein Fragmentbezeichner ist und dass Zeichenfolgen nach dem Hashtag nicht mit mod_rewrite verarbeitet werden können, aber ich habe erwartet, dass der Hashtag selbst angezeigt wird. Also habe ich versucht, Regeln wie diese zu verwenden.

Also, was ich versucht habe, ist (Ausschnitt)

<LocationMatch "^\/company\/customerPage\/">
    LogLevel alert rewrite:trace3
    RewriteCond %{QUERY_STRING} ([0-9]*)\/something$
    RewriteRule ^(.*)$ "https://newtest.mydomain.com/company/something/customer/$1" [L,R=301]

Das funktioniert nicht. Die Frage ist, ob ich ein kleines Problem mit meinem Code habe oder ob mir auch bewusst ist, dass das Risiko besteht, dass es nicht durchführbar ist … aber hoffentlich nicht.

Antwort1

https://www.w3.org/Addressing/URL/4_URI_Recommentations.html

Das Hash-Zeichen ( #, #, ASCII 23 hex) ist als Trennzeichen reserviert, um die URI eines Objekts von einem Fragmentbezeichner zu trennen.

Das bedeutet, dass

  • Der #Hashtag ist NICHT Teil der URI.

  • Und nur die URI wird an den Webserver gesendet.
    Der Hash und die Fragmentkennung werden in der Anforderung NICHT an den Webserver gesendet.

Es gibt serverseitig einfach nichts, was Apache und/oder mod_rewrite verarbeiten könnte.


Sie müssten dies durch etwas lösen, das clientseitig ausgeführt wird, beispielsweise JavaScript, das im Browserfenster ausgeführt wird.

verwandte Informationen