Apache - フラグメント (ハッシュタグ) に基づいて URL を書き換えることは可能ですか?

Apache - フラグメント (ハッシュタグ) に基づいて URL を書き換えることは可能ですか?

Apache/2.4.54 (Win64) の使用

このように古いドメインから新しいドメインに書き換えるように依頼されました

  • からhttps://oldtest.mydomain.com/company/customerpage/#/customer/<getThisNumber>/something
  • https://newtest.mydomain.com/company/something/customer/<getThisNumber>

正規表現を使用して番号を取得し、それを新しいものに渡し、[L,R=301] を使用してリダイレクトするだけでも問題なかったでしょう。

しかしref。StackOverFlowのこの投稿

ハッシュタグはフラグメント識別子であり、ハッシュタグの後の文字列はmod_rewriteで処理できないことはわかっていますが、ハッシュタグ自体は表示されることを期待していました。そのため、次のような一致ルールを試しました。

そこで私が試したのは(抜粋)

<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]

これは機能しません。問題は、コードに小さな問題があるのか​​、それともこれが実行できないリスクがあるかもしれないことを認識しているのかということです...しかし、うまくいけばそうではありません。

答え1

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

ハッシュ ( #、、#ASCII 23 16 進数) 文字は、オブジェクトの URI とフラグメント識別子を区切るための区切り文字として予約されています。

そこに暗示されているのは、

  • ハッシュ#タグは URI の一部ではありません。

  • URI のみが Web サーバーに送信されます。
    ハッシュとフラグメント識別子はリクエストで Web サーバーに送信されません。

Apache や mod_rewrite が処理するサーバー側は何も存在しません。


この問題を解決するには、ブラウザ ウィンドウで実行される JavaScript など、クライアント側で実行されるものを使用する必要があります。

関連情報