1


0

htaccessでファイル名を隠す

私のPerlアプリは、ホスティングアカウントで実行すると、アドレスバーにファイル名 'processing.cgi’を表示しますが、localhostでは正常に動作するようです。つまり、ファイル名 'processing.cgi’を表示しません。

両方の場所でまったく同じ.htaccessを次に示します。

AddHandler cgi-script .cgi
Options +ExecCGI

IndexIgnore *
DirectoryIndex processing.cgi

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ processing.cgi/$1

RewriteRule ^$ processing.cgi [L]
RewriteRule ^/$ processing.cgi [L]

これは/ public_htmlの.htaccessです:

Options -Indexes

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.main-domain\.com$ [NC]
RewriteRule ^(.*)$ http://main-domain\.com/$1 [R=301,L]

# BEGIN WordPress
#
# RewriteEngine On
# RewriteBase /
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule . /index.php [L]
#

# END WordPress

何を変更する必要がありますか?

助けてくれて本当にありがとうございます!

1 Answer


3


現在の設定では、ブラウザのロケーションバーに「http://example.com/」と入力すると、PerlスクリプトがHTTPリダイレクトを実行しない限り(そのようなロケーションバーに「processing.cgi」を表示する方法はありません(送信することにより) `Location`ヘッダー)。 したがって、Perlコードを再確認することをお勧めします。

いずれにせよ、ファイルの周りにランダムに散らばった多くのディレクティブのように見えるものが見えます。 それらの意味を説明すると、生産性が向上すると思います。

AddHandler cgi-script .cgi
Options +ExecCGI

CGIスクリプトを有効にし、*。cgi拡張子をマップして、 `.cgi`で終わるファイルがプログラムと見なされるようにします。

IndexIgnore *

空のディレクトリリストを生成するようにApacheに指示します。 人々がディレクトリのリストを望んでいないとき、彼らは通常それらを単に無効にします: Options -Indexes

DirectoryIndex processing.cgi

URLがディレクトリを指している場合、そのディレクトリ内で「processing.cgi」というファイルを見つけて表示します。 サイトのすべてのディレクトリでPerlプログラムのコピーを維持する予定ですか?

RewriteEngine on

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

URLが既存のファイルまたはディレクトリにマップされない場合…​

RewriteRule ^(.*)$ processing.cgi/$1

ユーザーが「http://example.com/foo/bar.jpg」と入力すると、実際に「http://example.com/processing.cgi/foo/bar.jpg」を実行します。 他のルールが一致するかどうかを確認します。

RewriteRule ^$ processing.cgi [L]

ユーザーが「http://example.com」と入力すると、実際に「http://example.com/processing.cgi」が実行されます。 ルールはこれで完了です。

RewriteRule ^/$ processing.cgi [L]

ユーザーが `http:// example.com /`と入力すると、実際に `http:// example.com / processing.cgi`が実行されます。 ルールはこれで完了です。

冗長なルールがたくさんあることが明らかになりました。 正確なニーズは100%明確ではありませんが、ほとんどのディレクティブを節約して削除できると思います。

AddHandler cgi-script .cgi
Options +ExecCGI

Options -Indexes

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ processing.cgi/$1 [L]