Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用mod_rewrite将包含哈希字符的路径转换为查询字符串_Php_Apache_Mod Rewrite_Hash_Urlencode - Fatal编程技术网

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

Php 使用mod_rewrite将包含哈希字符的路径转换为查询字符串,php,apache,mod-rewrite,hash,urlencode,Php,Apache,Mod Rewrite,Hash,Urlencode,我有一个PHP项目,需要在URL路径中发送一个散列字符(#)。()我认为urlencode会允许这样做,将散列转换为%23 但现在我看到,甚至urlencoded散列也迫使浏览器将右边的所有内容都视为URL片段(或查询) 有没有办法传递散列,或者我需要在urlencode之前进行字符替换 编辑添加(2017年9月19日): 原来我问错了问题。我的问题不是在路径中使用散列字符(编码它确实有效),而是使用mod_rewrite将其转换为查询字符串。我未能在重写规则内对其重新编码。我将编辑标题以匹配

我有一个PHP项目,需要在URL路径中发送一个散列字符(#)。()我认为urlencode会允许这样做,将散列转换为%23

但现在我看到,甚至urlencoded散列也迫使浏览器将右边的所有内容都视为URL片段(或查询)

有没有办法传递散列,或者我需要在urlencode之前进行字符替换

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

原来我问错了问题。我的问题不是在路径中使用散列字符(编码它确实有效),而是使用mod_rewrite将其转换为查询字符串。我未能在重写规则内对其重新编码。我将编辑标题以匹配

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

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]

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

http://twitter.com/home?status=I+believe+in+%23love
“我相信爱”


URL编码参考:

您以什么方式使用该URL?我认为urlencode应该将其更改为%23,您能提供一个示例代码吗?我正在创建指向动态创建的PDF的静态链接。我使用modrewrite将path元素传递到$\u GET。它们是创建PDF所需的产品参数。有些产品在产品名称中有哈希标记。哈希是一个保留字符,web浏览器无论如何都会这样处理。你对它进行编码没有关系,因为解释是一样的。杰里米:是的,经过更多的测试,我意识到是浏览器在起作用。如果我绕过浏览器,只告诉PHP解释两个URL(一个带urlencode,一个不带urlencode),它会完美地解析编码的URL。我必须在创建URL之前进行替换。谢谢这是有效的,令人惊讶的是,它花了这么长时间才得到正确的答案。将这个答案标记为正确。我想知道浏览器是否与我第一次询问时有所改变。我确实试过了%23。六年后,我重新审视了这一点,意识到蜘蛛是正确的,我实际上问了一个错误的问题。编辑标题和问题以反映这一点。迟做总比不做好,对吗?