Apache – É possível reescrever urls com base em fragmentos (hashtag)?

Apache – É possível reescrever urls com base em fragmentos (hashtag)?

Usando Apache/2.4.54 (Win64)

Fui solicitado a reescrever do domínio antigo para o novo assim

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

Poderia ter sido bom usar regex para pegar o número e passá-lo para o novo e depois apenas redirecionar usando [L,R=301].

Mas ref.esta postagem no StackOverFlow

Eu sei que a hashtag é um identificador de fragmento e que as strings após a hashtag não são algo que você possa processar com mod_rewrite, mas eu esperava que a própria hashtag aparecesse. Então eu tentei regras para combinar como estas

Então, o que eu tentei é (snippet)

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

Isso não funciona, a questão é se tenho um pequeno problema em meu código ou também estou ciente de que pode haver um risco de isso não ser possível... mas espero que não.

Responder1

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

O caractere hash ( #,, #ASCII 23 hex) é reservado como um delimitador para separar o URI de um objeto de um identificador de fragmento.

Implícito aí isso significa que

  • A #hashtag NÃO faz parte do URI.

  • E apenas o URI é enviado ao servidor web.
    O hash e o identificador de fragmento NÃO são enviados ao servidor web na solicitação.

Simplesmente não há nada no servidor para o Apache e/ou mod_rewrite processar.


Você precisaria resolver isso com algo que execute o lado do cliente; como o javascript do exemplo, que roda na janela do navegador.

informação relacionada