2009-05-19 6 views
3

Apache 2を使用して、ドメインへのリクエストがPython CGIスクリプトに転送されるようにWebサイトを設定します。基本的に、ユーザがhttp://www.example.comに行くと、私はcgi /cgi-bin/cgi.pyを実行します。ユーザーがhttp://www.example.com/index.rssに行くと、/cgi-bin/cgi.pyを/index.rssを引数として実行します。私はScriptAliasとRewriteのさまざまな組み合わせを試してきましたが、正しい関係でそれらを得ることはできません。CGIスクリプトでApacheを使用しているドメインへのすべてのリクエストをキャッチ

答えて

1

は(わからない正しいもの自身の質問に答えると手順に - しかし...)私は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] 

あなたの助けを借りてくれてありがとう。

0

あなたが探しているものは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 
2

これはあなたのpythonファイルへのすべての要求をリダイレクトします。 まだスクリプトエイリアスに問題がある場合は、RewriteRule行の末尾にパススルーフラグ[PT]を追加してみてください。 イメージなどにアクセスしたい場合は、RewriteRuleの前にこれを追加してください。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
0

キャプチャ書き換えルールを使用しましたが、それはある程度まで機能しました。問題は$ 1を使用しているときにリクエストURIの元のクエリ文字列がcgiに渡されなかったことです。私はキャプチャを削除し、アクセスを得るために私のcgiスクリプトでENV ['REQUEST_URI']を参照するだけでした。

関連する問題