我有一台安装了 apache 的 ubuntu 机器。我想使用网页通过 cgi 运行一些简单的 shell 脚本,然后回到我的主屏幕。我还希望自动返回步骤。我在我的 apache.conf 中设置了一个重定向,它工作正常,但脚本根本没有运行。
有没有办法运行脚本然后才应用重定向?
评论:
我认为这可能是答案,但我不确定。
你不能让你的cgi脚本输出这样的东西吗?
<META HTTP-EQUIV=Refresh CONTENT="0; URL=http://www.your-home-page.com/">
我猜您的 apache 在执行之前会将访问重定向到您的 cgi 脚本。
您将需要在您的 cgi 脚本中进行重定向。有两种可能的方式:
让您编写脚本输出一个 http 重定向标头。这也将告诉网络浏览器加载新站点。这是 perl 中的一个示例:
#!/usr/bin/perl
use CGI;
my $c = CGI->new();
print $c->redirect("http://yoursite");
如果您在控制台调用此脚本,它将输出以下内容:
Status: 302 Found
Location: http://yoursite
使用 perl CGI 模块之类的帮助模块最容易生成此标头。但是你也可以直接打印出上面的行。
如果您想从网页调用 shell 脚本,您也可以使用服务器端包含,或者如果您使用例如 php,则使用system()或exec()从您的 php 页面调用您的脚本。
最后提醒一句:通过 cgi 或 php 中的系统调用从 apache 执行脚本并不是一个非常优雅的解决方案,原因如下
在不知道您要解决的问题的情况下,很难给出更详细的建议。如果您想要某种形式的用户身份验证,请查找 htaccess-mechanism。否则,编写一个 php 脚本,它在被浏览器调用时执行所有处理,完成后也可能重定向到另一个页面。