Perl CGI的漂亮网址

时间:2018-04-24 20:29:01

标签: apache .htaccess perl cgi

我刚刚使用PHP转换为Perl,用于承载API命令的脚本。

作为php,.htaccess看起来像:

RewriteRule ^api/?$ api.php [L]
RewriteRule ^api/?([a-zA-Z0-9_-]{1,})?/?$ api.php?command=$1 [QSA,L]
RewriteRule ^api/?([a-zA-Z0-9_-]{1,})?/?([a-zA-Z0-9_-]{1,})?/?$ api.php?command=$1&key=$2 [QSA,L]

最终结果是使用类似http://example.com/api/command/key的网址(其中api是脚本名称)执行,按预期工作。

切换到Perl,访问http://example.com/api重定向到http://example.com/usr/lib/cgi-bin/api.pl,但这看起来并不起作用,而且看起来很可怕。我已经尝试了.htaccessserve-cgi-bin.conf所能想到的一切,但对我来说没有任何作用。只要文件夹名称和扩展名没有出现在网址中,我需要将api.pl放入哪个文件夹并不重要。

如何获得所需的网址?

1 个答案:

答案 0 :(得分:3)

您只需要在规则中将api.php替换为cgi-bin/api.pl

RewriteRule ^api/?$ cgi-bin/api.pl [L]
RewriteRule ^api/?([a-zA-Z0-9_-]{1,})?/?$ cgi-bin/api.pl?command=$1 [QSA,L]
RewriteRule ^api/?([a-zA-Z0-9_-]{1,})?/?([a-zA-Z0-9_-]{1,})?/?$ cgi-bin/api.pl?command=$1&key=$2 [QSA,L]

您可以使用htaccess.madewithlove.be之类的工具来测试您的规则。