.htaccess 是否可以在htaccess中重写“mailto:”,然后换行?

g0czyy6m  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(150)

出于复杂的原因,我不得不从网站上删除一个查询表单,并使用“mailto:”来代替。为了简单起见,我修改了htaccess文件,使以前的“contact”链接变成了“mailto:”,如下所示:

RewriteRule ^contact$ mailto:myname@mydomain.com?subject=BusinessName\ BandB\ Enquiry&body=You\ can\ find\ our\ availability\ on\ line.\ Delete\ this\ content\ if\ inapplicable

这确实起作用了,我的本地电子邮件客户端(Thunderbird)打开,主题和正文中正确显示了信息。(我的TB设置为纯文本撰写,我还没有用HTML测试)
我想在正文中加入一个新的行,这样“如果不适用,请删除此内容”就在单独的一行中。有什么方法可以做到这一点吗?鉴于mod_rewrite的预期目的,如果没有,我可以理解,但我想在放弃之前我应该问一下。

rqenqsqc

rqenqsqc1#

我想在正文中引入一个 * 新行 *,这样“如果不适用,请删除此内容”就在单独的一行上。
正文中的新行需要用两个字符表示:回车(字符13)+换行符(字符10)(请参见RFC2368)。这需要在结果URL中编码为%0D%0A
当在RewriteRule * 替换 * 字符串中使用时,文字%字符需要反斜杠转义,以否定它们作为对前面的 CondPattern(没有一个)的反向引用的特殊含义,即\%0D\%0A。否则,您将以字符串DA结束,因为在本例中没有%0反向引用。
您还可以通过将整个参数(substitution string)括在双引号中来避免对所有文本空格进行反斜杠转义。
因此,请尝试以下方法:
RewriteRule ^contact$ "mailto:myname@mydomain.com?subject=BusinessName BandB Enquiry&body=You can find our availability on line.\%0D\%0ADelete this content if inapplicable" [R,L]

相关问题