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

     2023-03-04     192

关键词:

【中文标题】使用 mod_rewrite 将带有哈希字符的路径转换为查询字符串【英文标题】:Using mod_rewrite to convert paths with hash characters into query strings 【发布时间】:2011-06-25 00:50:24 【问题描述】:

我有一个 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]

【问题讨论】:

您以什么方式使用该网址? 我相信 urlencode 应该把它改成 %23,你能提供一个示例代码吗? 我正在为动态创建的 PDF 创建静态链接。我正在使用 modrewrite 将路径元素传递给 $_GET。它们是创建 PDF 所需的产品参数。一些产品的产品名称中有井号标签。 哈希是一个保留字符,无论如何网页浏览器都会这样对待它。是否对其进行编码并不重要,因为解释将是相同的。还有其他角色可以使用吗? Jeremy:是的,经过更多测试后,我意识到是浏览器在做这件事。如果我绕过浏览器并告诉 PHP 解释两个 URL(一个带有 urlencode,一个没有),它会完美地解析编码的 URL。在创建 URL 之前,我必须进行替换。谢谢! 【参考方案1】:

使用 %23 编码 URL 中的哈希

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

“我相信#love”

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

【讨论】:

这行得通,令人惊讶的是花了这么长时间才得到正确回答 将此答案标记为正确。我想知道从我第一次询问时浏览器是否发生了变化。我肯定试过 %23。 六年后,我重新审视了这一点,意识到 Spider 是正确的,而我实际上一直在问错误的问题。编辑标题和问题以反映这一点。迟到总比没有好,对吧?

带有斜杠的 mod_rewrite 会破坏 CSS/IMG/SCRIPTS 路径

】带有斜杠的mod_rewrite会破坏CSS/IMG/SCRIPTS路径【英文标题】:mod_rewritewithTrailingSlashbreaksCSS/IMG/SCRIPTSpaths【发布时间】:2011-10-1116:18:41【问题描述】:我正在尝试使mod_rewrite成为url中的第一个子目录字符串,以便在类/db中创建与“js... 查看详情

使用 mod_rewrite 重定向查询字符串(反之亦然)

】使用mod_rewrite重定向查询字符串(反之亦然)【英文标题】:Redirectquerystringwithmod_rewrite(viceversa)【发布时间】:2018-09-1822:48:08【问题描述】:假设我有带有查询字符串的URL,即:/DesignPatterns使用mod_rewrite,我如何将它们重定向... 查看详情

使用 Mod_Rewrite 将 ROOT 重写到另一个路径

】使用Mod_Rewrite将ROOT重写到另一个路径【英文标题】:UseMod_RewritetoRewriteROOTtoAnotherPath【发布时间】:2011-02-1512:34:27【问题描述】:注意:我已经尝试过thisquestion下的建议,但它们要么不起作用,要么给我一个无限重定向循环错... 查看详情

如何将带有\的字符串路径转换为\\?

...为\\\\?【发布时间】:2019-01-0423:41:26【问题描述】:我使用jquery来获取htmlimg元素的路径,如下所示:path=$("#img_elemnt_id).attr(\'src\')它给了我一个字符串path="C:\\User\\pic.j 查看详情

mod_rewrite:从 URL 中删除查询字符串?

】mod_rewrite:从URL中删除查询字符串?【英文标题】:mod_rewrite:removequerystringfromURL?【发布时间】:2011-03-2806:53:40【问题描述】:我正在尝试使用.htaccess进行以下重定向(301)*?page=1重定向到*(其中*是通配符)。基本上,我只是想阻... 查看详情

如何使用 mod_rewrite 伪造路径?基本上如何使用 mod_rewrite 在特定的 url 路径上提供平面文件?

】如何使用mod_rewrite伪造路径?基本上如何使用mod_rewrite在特定的url路径上提供平面文件?【英文标题】:Howtofakeapathwithmod_rewrite?Basicallyhowtoserveaflatfileonaspecificurlpathusingmod_rewrite?【发布时间】:2015-05-0602:32:24【问题描述】:自从... 查看详情

使用带有字符串键和不区分大小写的搜索的哈希表/字典

】使用带有字符串键和不区分大小写的搜索的哈希表/字典【英文标题】:UsingHashtables/Dictionarieswithstringkeys&CaseInsensitiveSearching【发布时间】:2010-10-2519:30:52【问题描述】:想知道这是否可能。我们有一个第3方库,其中包含有... 查看详情

找不到带有哈希字符串“android-24”的目标

】找不到带有哈希字符串“android-24”的目标【英文标题】:Failedtofindtargetwithhashstring\'android-24\'【发布时间】:2016-06-2618:56:09【问题描述】:在将所有Google库更改为24.0.0并将compileSdkVersion和targetSdkVersion更改为24后,我收到此错误... 查看详情

找不到带有哈希字符串“android-22”的目标

】找不到带有哈希字符串“android-22”的目标【英文标题】:failedtofindtargetwithhashstring\'android-22\'【发布时间】:2015-09-2211:14:22【问题描述】:我已经用最新版本更新了androidstudio,然后在谷歌搜索后我还用API18更新了AndroidSDK,但它... 查看详情

使用点分路径键字符串访问 Ruby 哈希

】使用点分路径键字符串访问Ruby哈希【英文标题】:AccessRubyHashUsingDottedPathKeyString【发布时间】:2011-10-3115:41:50【问题描述】:RailsI18n库将YAML文件转换为可使用t()函数通过虚线路径调用访问的数据结构。t(\'one.two.three.four\')有谁... 查看详情

使用点分路径键字符串访问 Ruby 哈希

】使用点分路径键字符串访问Ruby哈希【英文标题】:AccessRubyHashUsingDottedPathKeyString【发布时间】:2011-10-3115:41:50【问题描述】:RailsI18n库将YAML文件转换为可使用t()函数通过虚线路径调用访问的数据结构。t(\'one.two.three.four\')有谁... 查看详情

Mod_rewriting 将查询字符串写入 swf 文件

】Mod_rewriting将查询字符串写入swf文件【英文标题】:Mod_rewritingaquerystringontoaswffile【发布时间】:2011-01-1120:23:09【问题描述】:我正在尝试使用mod_rewrite来清理Flash视频播放器的URL。首先,这是我试图重写的原始URL:library/player.swf... 查看详情

mod_rewrite 规则重定向除一个特定路径之外的所有请求

】mod_rewrite规则重定向除一个特定路径之外的所有请求【英文标题】:mod_rewriteruletoredirectallrequestsexceptforonespecificpath【发布时间】:2010-09-0609:03:42【问题描述】:我正在尝试使用Apache2.2VirtualHost声明中的mod_rewrite将所有对我的域的... 查看详情

sh使用findwithprint0安全地将带有任何合法字符的文件名或文件路径写入数组并迭代它们。(代码片段)

查看详情

带有 mod_rewrite 的不区分大小写的 URL

】带有mod_rewrite的不区分大小写的URL【英文标题】:CaseInsensitiveURLswithmod_rewrite【发布时间】:2011-01-0104:10:03【问题描述】:我想要任何没有命中现有文件的url,以查找其他可能的情况并查看这些文件是否存在,如果存在,则向它... 查看详情

Internet Explorer 使用 jQuery 地址将哈希值放入 href

...在寻找一个好的pushstatejquery插件来使用ajax-json(以及php的mod_rewrite当js关闭时)并找到jQuery地址。我非常喜欢它,因为它有据可查且易于使用。 查看详情

“在将哈希分配给 perl 中的哈希时,“不能使用字符串 (””) 作为哈希引用,而“严格引用”在使用时出现错误

】“在将哈希分配给perl中的哈希时,“不能使用字符串(””)作为哈希引用,而“严格引用”在使用时出现错误【英文标题】:"Can\'tusestring("")asaHASHrefwhile"strictrefs"inuseat"errorwhileassigninghashtoanhashinperl【发布... 查看详情

为啥关键字参数必须作为带有符号键的哈希传递,而不是 Ruby 中的字符串键?

】为啥关键字参数必须作为带有符号键的哈希传递,而不是Ruby中的字符串键?【英文标题】:Whykeywordargumentsmustbepassedashashwithsymbolkeys,notstringkeysinRuby?为什么关键字参数必须作为带有符号键的哈希传递,而不是Ruby中的字符串键?... 查看详情