Скрытие имени файла с помощью htaccess - PullRequest
1 голос
/ 14 сентября 2010

Мое приложение 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]

Это .htaccess в / public_html:

Options -Indexes 

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

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

# END WordPress

Что мне нужно изменить?

Большое спасибо за вашу помощь!

1 Ответ

3 голосов
/ 14 сентября 2010

При текущей настройке, если вы введете http://example.com/ в адресную строку браузера, вы не сможете увидеть processing.cgi в такой адресной строке, если ваш Perl-скрипт не выполняет перенаправление HTTP (отправляя заголовок 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...