#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>
Спасибо Квентину выше.