Как мне обрабатывать маршруты Dancer при запуске в качестве CGI-скрипта?

#perl #apache #mod-rewrite #cgi #dancer

#perl #apache #мод-перезапись #cgi #dancer

Вопрос:

Я запускаю платформу Perl Dancer, следуя инструкциям, написанным в Dancer::Deployment для запуска в качестве cgi-скрипта. Это позволяет мне отображать страницу по умолчанию для маршрута ‘/’, но, похоже, я не могу ничего сделать сверх этого. Например, предположим, что я хочу запросить что-то вродеhttp://localhost/myroute и пусть это обрабатывается обработчиком маршрута ‘/ myroute’. Как бы я это провернул?

Я использую mod_rewrite от apache для направления своих запросов. В настоящее время, если я попробую вышеописанное, я получу сообщение типа «Запрошенный URL / cgi-bin /dancer.cgimyroute не был найден на этом сервере». Ниже приведено содержимое моего .htaccess.

 <IfModule mod_rewrite.c>    
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ /cgi-bin/dancer.cgi$1 [QSA,L]
</IfModule>
  

Я использую Apache 2.2 в Windows XP с Dancer 1.3030. Я понимаю, почему я получаю сообщение об ошибке, которое я получаю. Что я ищу, так это некоторый пример кода для обработки маршрута «/ myroute» и, возможно, несколько предложений относительно любых изменений, которые я должен внести в свой файл .htaccess.

Комментарии:

1. Я бы предположил , что вам нужно dancer.cgi/$1

2. Вау! Сейчас это кажется очевидным, но на самом деле это ответ.

3. Вероятно, стоит отправить это как ответ, а не комментарий, чтобы его можно было принять?

Ответ №1:

Для настройки потребовалось / после dancer.cgi :

 <IfModule mod_rewrite.c>    
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ /cgi-bin/dancer.cgi/$1 [QSA,L]
</IfModule>
  

Спасибо Квентину выше.