Я хочу перенаправить все запросы в файл perl, который должен обрабатывать их в зависимости от поддомена..htaccess перенаправить все запросы в файл perl
Я попытался с помощью этого .htaccess:
Options +ExecCGI
AddHandler fcgid-script .pl
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+?)\.example\.com$
RewriteRule ^(.*)$ /%1/main.pl/$1 [L]
Я бы ожидать, что, если я пытаюсь открыть master.example.com, что мой ~/HTML-корень/мастер/main.pl бы получить выполнен, но вместо этого я получаю «Внутреннюю ошибку сервера».
error_log Apache говорит
[Wed Jan 20 18:06:36 2016] [error] [client xxx.xxx.xxx.xxx] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: http://master.example.com/
Если я пытаюсь посетить example.com/master/main.pl мой скрипт запускается на выполнение только штрафом.
Что я делаю неправильно?
Это работает. Не могли бы вы объяснить мне, что делает ваша линия? – dave
@dave Проблема в том, что вам нужно убедиться, что вы игнорируете подпапку, на которую указываете. В вашем случае это 'dynamic', потому что это зависит от субдомена. Вы не можете использовать backreference в регулярном выражении rewritecond. Таким образом, это правило использует backrefence '% 1' в левой части строки, сопоставляя и группируя блок текста до :: и сравнивая с помощью ссылки' \ 1'. Это в основном статический эквивалент 'RewriteCond% {REQUEST_URI}! ^/Master [NC]' –
master.example.com/master снова вызывает ошибку. На этот раз он говорит Forbidden ... – dave