ドメイン名が私のサーバーのIPアドレスを指しているとしましょう。
ドメイン名が来るとすぐに...
Apacheを実行したいです。
python_script domain.tld
おそらく..
bash_script domain.tld
受信ドメインが次の場合:
domain.tld/test
それから..
bash_script domain.tld/test
実行しなければならない。
Bashスクリプトで計算を実行し、表示する内容を決定できます。
セキュリティの問題のため、このようには機能しないかもしれませんが、セキュリティは私の関心ではありません。ただテストしてみたかったです。
答え1
apache
仮想ホストが定義されていない場合、デフォルトのインストールはそれを指すすべてのURLを提供します。したがって、apache
応答を得るために追加の作業を実行する必要はありません。
スクリプトを挿入し/var/www/cgi-bin
て通過することを確認してくださいchmod 0755 <script name>
。
/var/www/cgi-bin/test.sh
たとえば、次を生成する場合:
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "<pre>"
env
echo "</pre>
次に、ブラウザ:に移動すると、次のhttp://<server name or IP>/cgi-bin/test.sh
ような内容が表示されます。
SERVER_SIGNATURE=
Apache/2.2.15 (CentOS) Server at testing.lo Port 80
HTTP_USER_AGENT=Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0
SERVER_PORT=80
HTTP_HOST=testing.lo
DOCUMENT_ROOT=/var/www/html
SCRIPT_FILENAME=/var/www/cgi-bin/test.sh
REQUEST_URI=/cgi-bin/test.sh
SCRIPT_NAME=/cgi-bin/test.sh
HTTP_CONNECTION=keep-alive
REMOTE_PORT=43964
PATH=/sbin:/usr/sbin:/bin:/usr/bin
PWD=/var/www/cgi-bin
SERVER_ADMIN=root@localhost
HTTP_ACCEPT_LANGUAGE=en-gb,en;q=0.5
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
REMOTE_ADDR=192.168.122.1
SHLVL=1
SERVER_NAME=testing.lo
SERVER_SOFTWARE=Apache/2.2.15 (CentOS)
QUERY_STRING=
SERVER_ADDR=192.168.122.40
GATEWAY_INTERFACE=CGI/1.1
SERVER_PROTOCOL=HTTP/1.1
HTTP_CACHE_CONTROL=max-age=0
HTTP_ACCEPT_ENCODING=gzip, deflate
REQUEST_METHOD=GET
_=/bin/env
ご覧のとおり、HTTP_HOST
これはサーバーのURL(testing.lo
この場合)であり、スクリプトで使用できます。
ただし、これは/cgi-bin/test.sh
URLで要求されたものとまったく一致しません。この問題を解決するには、リダイレクトする必要があります。最も簡単な方法は、ファイルを有効にして.htaccess
設定することです。
/etc/httpd/conf/httpd.conf
行を見つけて<Directory "/var/www/html">
から始まる行が表示されるまで、数行下にスクロールしますAllowOverride
。に設定されていることを確認してくださいAll
。以下が必要です。
<Directory "/var/www/html">
...
...
AllowOverride All
...
...
</Directory>
ここでファイルを作成し、/var/www/html/.htaccess
次の内容を追加します。
RewriteEngine on
RewriteRule (.*) /cgi-bin/test.sh/$1 [L]
再起動apache
:
service httpd restart
ブラウザでサーバーのURLを指しますhttp://<server name or IP>
。
以前と同様の結果が表示されますが、URLにスクリプトパスを追加しないでください。また、スクリプトで使用するために入力したURLを知らせる環境変数もあります。
HTTP_HOST
サーバーの名前です。
PATH_INFO
サーバーに追加されたパス。 (ブラウザに入力する場合test
)http://<server name or IP>/test
あなたのスクリプトでは、bash
あなたの質問が示すように、スクリプトの引数を解析する代わりにこれらの変数を使用する必要があります。
しかし、bash
スクリプトの場合、必ずしもそうではありません。渡された環境変数にアクセスできる限り、目的の言語を使用してください。