我有一个需要维护和改进的Web界面,用简单的旧CGI.pm方式编写。那个应用程序也没有使用模板系统。这是由apache提供的,就像那样:
/var/www/vhost/myapp/cgi-bin/app.cgi
/htdocs/css/styles.css
/htdocs/js/script.js
要向该应用添加新页面,让我的生活更轻松,我想在其旁边主持一个Dancer或Dancer2应用,我正在考虑这样的事情:
/var/www/vhost/myapp/cgi-bin/app.cgi
/cgi-bin/dispatch.cgi (the one from Dancer2)
/htdocs/css/styles.css
/js/script.js
/dancer_public/...
/dancer2/lib/...
/views/...
/environement/...
在调度员中,我正在改变到达Dancer2 bin / app.psgi的路径。 我将以下.htaccess文件添加到htdocs目录:
# BEGIN dancer application htaccess
RewriteEngine On
RewriteBase /v2
RewriteRule ^/v2$ /cgi-bin/dispatch.cgi [L]
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule v2/(.*) /cgi-bin/dispatch.cgi/$1 [L]
# END dancer application htaccess
通过这样做,
现在你有了设置,这里是我遇到问题的地方, 从v2到舞者应用程序的重定向工作非常好,但是,为了保持一致,我希望从v2创建 uri_for 创建URL,但是它使用SCRIPT_NAME作为基本URL,显示问题,当我创建该url时:uri_for('/ mypage'),
我想有那个网址:example.com/v2/mypage,
但我有url example.com/cgi-bin/dispatch.cgi/mypage
SCRIPT_NAME环境变量包含cgi-bin / dispatch.cgi,我有一个可怕的黑客,这是有效的,但显然不是解决方案,我可以通过在cgi调度程序中强制SCRIPT_NAME到/ v2来实现我预期的行为,一个BEGIN块。 如果有人作为一个干净的解决方案,那将是一个很大的帮助!
由于
答案 0 :(得分:0)
D1遇到同样的问题。
$ ENV {SCRIPT_NAME} ='&#39 ;;
在dispatch.fcgi内帮助我。