我知道在我的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脚本的请求,因此这适用于一个非常简单的解决方案。你可以告诉浏览器发出一个HTTP POST请求,而不是通常的HTTP GET请求,方法是像这样向表单标签添加一个method
属性。
<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/?