使用 Apache mod 重写来修改查询字符串



我知道在我的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/?

最新更新