簡體   English   中英

PERL Dancer2,CGI調度程序和uri_for助手

[英]PERL Dancer2, cgi dispatcher and uri_for helper

我有一個需要維護和改進的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

通過這樣做,

  • 訪問example.com/cgi-bin/app.cgi可以按預期向我顯示舊應用
  • 訪問example.com/v2,向我展示了Dancer應用程序的主頁,默認頁面為默認頁面,不帶CSS,這是我移動公共目錄時所期望的,以及其他一些修改

現在您已經設置好了,這是我遇到的問題,從v2到舞者應用程序的重定向確實運行良好,但是,為了保持一致,我希望uri_for從v2創建url,但是當我創建URL時,使用SCRIPT_NAME作為基本URL來顯示問題:uri_for('/ mypage'),

  • 我想擁有該網址:example.com/v2/mypage,

  • 但是我有URL example.com/cgi-bin/dispatch.cgi/mypage

SCRIPT_NAME環境變量包含cgi-bin / dispatch.cgi,我遇到了一個可怕的問題,這是可行的,但顯然不是解決方案,我可以通過在BEGIN塊中在cgi調度程序中將SCRIPT_NAME強制為/ v2來達到預期的行為。 如果有人將其作為一個干凈的解決方案,那將有很大的幫助!

謝謝

D1也有同樣的問題。

$ ENV {SCRIPT_NAME} ='';

在dispatch.fcgi內部可以幫助我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM