使用mod_rewrite将包含哈希字符的路径转换为查询字符串

2022-08-30 13:20:23

我有一个PHP项目,我需要在URL的路径中发送一个哈希字符(#)。(http://www.example.com/parameter#23/parameter#67/index.php)我认为urlencode会允许这样做,将哈希转换为%23

但是现在我看到,即使是urlencoded的哈希也迫使浏览器将右侧的所有内容视为URL片段(或查询)。

有没有办法传递哈希值,或者我需要在urlencode之前进行字符替换?

编辑以添加(2017 年 9 月 19 日):

事实证明,我问错了问题。我的问题不在于在路径中使用哈希字符(编码它确实有效),而在于使用mod_rewrite将其转换为查询字符串。我未能在RewriteRule中重新编码它。我将编辑标题以匹配。

以下是我使用的重写规则:

RewriteEngine On
# convert path strings into query strings
RewriteRule "^(.*)/(.*)/hashtags.php"      /hashtags.php?parameter_1=$1&parameter_2=$2 [QSA,L]

一旦我添加了B标签,它就正常工作了:

RewriteEngine On
# convert path strings into query strings
RewriteRule "^(.*)/(.*)/hashtags.php"      /hashtags.php?parameter_1=$1&parameter_2=$2 [QSA,L,B]

答案 1

使用 %23 对 URL 中的哈希进行编码

http://twitter.com/home?status=I+believe+in+%23love

“我相信#love”

网址编码参考:http://www.w3schools.com/tags/ref_urlencode.asp


答案 2

推荐