使用 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] 进行重定向。
我知道标签是一个片段标识符,标签后面的字符串不能用 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。