1

我想将环境变量传递给用 perl 编写的 cgi 脚本,方法是将其作为 URL 中域名后第一个斜杠后的唯一文本。例如,通常人们可能会这样做: http://www.mydomain.com/cgi-bin/my_perl_script.pl?my_environment_variable=12345. 我希望它看起来像这样 http://wwww.mydomain.com/12345:我怎么做?当用户浏览我的网站时,我希望持久访问此值。我很乐意将它作为隐藏的表单输入传递,或者写一个 cookie。这纯粹是出于审美目的,并使网址更容易记住。

4

2 回答 2

1

如果您正在运行 Apache(就像我一样),您应该使用 mod_rewrite 模块。看哪:

<IfModule mod_rewrite.c>
    RewriteEngine   on
    RewriteCond     %{REQUEST_FILENAME}     !-d
    RewriteCond     %{REQUEST_FILENAME}     !-f
    RewriteRule     ([^(cgi\-bin\/my_perl_script\.pl)]+) /cgi-bin/my_perl_script.pl?my_environment_variable=$1  [QSA,L]
</IfModule>
于 2013-02-27T20:49:45.393 回答
0

假设您正在使用该CGI.pm模块,您可以使用该url()方法获取用于访问脚本的 URL。打开-path-rewrite打开以获取完整路径。

然后,您可以随意解析它(URI 模块是一个不错的选择)。

这样的:

use strict;
use warnings;
use CGI;
use URI;
use Try::Tiny;

my $cgi = CGI->new;

my $id = "a default value";

try {
    my $uri = URI->new($cgi->url(-rewrite=>1, -path=>1));
    my $path = $uri->path;
    my @parts = split '/', $path;
    $id = pop @parts;
};

print $cgi->header('text/plain');
say $id;
于 2012-10-12T14:29:14.887 回答