我有一个PHP项目,需要在URL的路径中发送一个带有井号(#)的字符。(http://www.example.com/parameter#23/parameter#67/index.php)我以为urlencode可以允许这样做,将#转换为%23。
但现在我意识到,即使是经过url编码的#也会强制浏览器将右侧所有内容视为URL片段(或查询)。
有没有一种通过方式来传递一个#,或者我需要在urlencode之前进行字符替换? 编辑添加(2017年9月19日): 事实证明,我问错了问题。我的问题不在于在路径中使用井号(对其进行编码确实有效),而在于使用mod_rewrite将其转换为查询字符串。我没有在RewriteRule中重新进行编码。我将编辑标题以匹配。 这是我正在使用的重写规则:
有没有一种通过方式来传递一个#,或者我需要在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]