使用 Apache mod rewrite 修改查询字符串

问题描述 投票:0回答:2

我知道可以在我的 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 重写一起使用。所以我也会采纳模块建议。

apache perl mod-rewrite url-rewriting
2个回答
0
投票

由于您打算在某个时候使用 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 传入参数一样。


0
投票

我不清楚你需要做什么,但如果你只想从 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/?
© www.soinside.com 2019 - 2024. All rights reserved.