漂亮 URL 用于 Perl CGI
Pretty URL for Perl CGI
我刚刚从使用 PHP 转换为使用 Perl 来编写托管 API 命令的脚本。
作为 php,.htaccess 看起来像:
RewriteRule ^api/?$ api.php [L]
RewriteRule ^api/?([a-zA-Z0-9_-]{1,})?/?$ api.php?command= [QSA,L]
RewriteRule ^api/?([a-zA-Z0-9_-]{1,})?/?([a-zA-Z0-9_-]{1,})?/?$ api.php?command=&key= [QSA,L]
最终结果是使用 url 执行,如 http://example.com/api/command/key
(其中 api 是脚本名称),按预期工作。
切换到 Perl,访问 http://example.com/api
重定向到 http://example.com/usr/lib/cgi-bin/api.pl
,这根本不起作用,而且看起来也很丑陋。我已经用 .htaccess
和 serve-cgi-bin.conf
尝试了所有我能想到的方法,但对我来说没有任何效果。我需要将 api.pl
放入哪个文件夹并不重要,只要文件夹名称和扩展名不出现在 url.
中即可
怎样才能得到想要的url?
您只需将规则中的 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= [QSA,L]
RewriteRule ^api/?([a-zA-Z0-9_-]{1,})?/?([a-zA-Z0-9_-]{1,})?/?$ cgi-bin/api.pl?command=&key= [QSA,L]
您可以使用 htaccess.madewithlove.be 等工具来测试您的规则。
我刚刚从使用 PHP 转换为使用 Perl 来编写托管 API 命令的脚本。
作为 php,.htaccess 看起来像:
RewriteRule ^api/?$ api.php [L]
RewriteRule ^api/?([a-zA-Z0-9_-]{1,})?/?$ api.php?command= [QSA,L]
RewriteRule ^api/?([a-zA-Z0-9_-]{1,})?/?([a-zA-Z0-9_-]{1,})?/?$ api.php?command=&key= [QSA,L]
最终结果是使用 url 执行,如 http://example.com/api/command/key
(其中 api 是脚本名称),按预期工作。
切换到 Perl,访问 http://example.com/api
重定向到 http://example.com/usr/lib/cgi-bin/api.pl
,这根本不起作用,而且看起来也很丑陋。我已经用 .htaccess
和 serve-cgi-bin.conf
尝试了所有我能想到的方法,但对我来说没有任何效果。我需要将 api.pl
放入哪个文件夹并不重要,只要文件夹名称和扩展名不出现在 url.
怎样才能得到想要的url?
您只需将规则中的 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= [QSA,L]
RewriteRule ^api/?([a-zA-Z0-9_-]{1,})?/?([a-zA-Z0-9_-]{1,})?/?$ cgi-bin/api.pl?command=&key= [QSA,L]
您可以使用 htaccess.madewithlove.be 等工具来测试您的规则。