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] 进行重定向。

但参考。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 十六进制)字符保留作为分隔符,用于将对象的 URI 与片段标识符分隔开。

暗示着

  • 标签#不是 URI 的一部分。

  • 并且只有 URI 被发送到 Web 服务器。
    哈希和片段标识符不会在请求中发送到 Web 服务器。

服务器端根本就没有什么可供 Apache 和/或 mod_rewrite 处理的。


您需要通过在客户端运行的某些程序来解决这个问题;例如在浏览器窗口中运行的 javascript。

相关内容