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

xoshrz7s  于 7个月前  发布在  Apache
关注(0)|答案(2)|浏览(53)

我知道这是可能的使用mod重写在我的htaccess
采取:

http://example.com/directory/perlscript.pl?base64encodedquery=jhfkjdshfsdf78fs8y7sd8

创建一个更短的URL:

http://example.com/? whatever just want to make it prettier

传入:我使用use CGI;,因此$qry->param('base64encodedquery'));然后我使用use MIME::Base64解码查询字符串(之前编码)。
我真的不需要编码和解码查询,但我正在学习,只是想屏蔽/隐藏我的查询字符串,包含多达15个短参数。
我倾向于一个Perl模块,缩短网址,我正在积极搜索。实际上,我不认为我的编码查询可以用于mod重写。所以我也会采纳模块建议。

oknwwptz

oknwwptz1#

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

dhxwm5r4

dhxwm5r42#

我不清楚你需要做什么,但如果你只是想从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/?

相关问题