Наличие CGI-скрипта перехватывает все запросы к домену с помощью Apache - PullRequest
5 голосов
/ 19 мая 2009

Используя Apache 2, я хочу настроить свой веб-сайт таким образом, чтобы любые запросы к домену перенаправлялись в скрипт Python CGI. По сути, если пользователь переходит на http://www.example.com, я хочу, чтобы cgi /cgi-bin/cgi.py выполнялся. Если пользователь переходит к http://www.example.com/index.rss, я хочу, чтобы /cgi-bin/cgi.py выполнялся с /index.rss в качестве аргумента. Я пробовал различные комбинации ScriptAlias ​​и Rewrite и, похоже, не могу найти их в правильных отношениях.

Ответы [ 4 ]

3 голосов
/ 19 мая 2009
RewriteEngine On

RewriteRule ^(.*)$ /cgi-bin/cgi.py?url=$1

Это перенаправит ВСЕ запросы в ваш файл python. Если у вас все еще возникают проблемы с псевдонимом сценария, попробуйте добавить флаг прохождения [PT] в конце строки RewriteRule. Если вы все еще хотите иметь доступ к изображениям и т. Д., Добавьте это перед RewriteRule:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
2 голосов
/ 19 мая 2009

(не уверен в правильной процедуре с ответом на свой вопрос - но ...)

Похоже, у меня был конфликт с ScriptAlias ​​и RewriteRule. В конце концов, решение состояло в том, чтобы использовать AddHandler для создания отношений, а затем использовать mod_rewrite, чтобы вытянуть все в CGI. И RewriteCond, чтобы избежать отлова / resources / и / media /. Мой VirtualHost теперь выглядит так:

AddHandler cgi-script .cgi
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/resources/.*$
RewriteCond %{REQUEST_URI} !^/media/.*$
RewriteRule ^(.*)$ /cgi-bin/pyblosxom.cgi$1 [L]

Спасибо за вашу помощь, ребята.

1 голос
/ 19 мая 2009

Хотя это не на 100% то, что вы ищете, вот .htaccess, который я использую для моего старого заброшенного домена, чтобы правильно перенаправить людей. Он в основном перенаправляет на любой файл или каталог, не найденный в структуре локального каталога. Сам скрипт должен выяснить, для какого URL он был вызван:

RewriteEngine On

#if the request isn't for a file or a directory...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
0 голосов
/ 19 ноября 2009

Я использовал правило перезаписи захвата, и оно работало до некоторой степени. Проблема заключалась в том, что исходная строка запроса URI запроса не передавалась в cgi при использовании $ 1. Я закончил тем, что удалил захват и просто ссылался на ENV ['REQUEST_URI'] в моем скрипте cgi, чтобы получить доступ.

...