我知道可以在我的 htaccess 中使用 mod 重写
采取:
http://example.com/directory/perlscript.pl?base64encodedquery=jhfkjdshfsdf78fs8y7sd8
制作一个较短的网址:
http://example.com/? whatever just want to make it prettier
传入:我正在使用
use CGI;
因此 $qry->param('base64encodedquery'));
然后我使用 use MIME::Base64
来解码查询字符串(之前编码)。
我真的不需要对查询进行编码和解码,但是,我正在学习,只是想屏蔽/隐藏最多包含 15 个短参数的查询字符串。
我倾向于使用可缩短 URL 的 Perl 模块,并且我正在积极搜索。实际上我不认为我的编码查询可以与 mod 重写一起使用。所以我也会采纳模块建议。
由于您打算在某个时候使用 HTML 表单生成对 Perl 脚本的请求,因此这本身就是一个非常简单的解决方案。您可以通过向表单标记添加
method
属性来告诉浏览器发出 HTTP POST 请求,而不是通常的 HTTP GET 请求。
<form method="POST" action="http://example.com/directory/perlscript.pl">
<input name="whatever"/>
</form>
浏览器将向“http://example.com/directory/perlscript.pl”发出请求,但不会有查询字符串 - 而是通过 STDIN 传入表单数据。但您实际上并不需要知道,因为您使用的任何框架都应该透明地处理该问题,并提供对传入参数的访问,就像通过 URL 传入参数一样。
我不清楚你需要做什么,但如果你只想从 URL 中删除路径和查询,那么你可以使用
URI
模块
use strict;
use warnings 'all';
use feature 'say';
use URI;
my $url = URI->new('http://example.com/directory/perlscript.pl?base64encodedquery=jhfkjdshfsdf78fs8y7sd8');
say $url;
$url->path("/");
$url->query("");
say $url;
http://example.com/directory/perlscript.pl?base64encodedquery=jhfkjdshfsdf78fs8y7sd8
http://example.com/?