mod_rewrite для прямого доступа к поддомену - PullRequest
1 голос
/ 04 сентября 2010

Мы настраиваем API и хотим использовать Apache mod_rewrite для направления всех обращений к http://api.domain.com к сценарию, расположенному в /cgi-bin/api.pl.Вот что мы сейчас используем:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^api.domain.com$ [NC]
RewriteRule ^(.*)$ /cgi-bin/api.pl [NC,L,QSA]

Однако, это дает нам следующую ошибку:

[Fri Sep 03 14:18:32 2010] [error] [client 67.180.34.0] mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary.
[Fri Sep 03 14:18:32 2010] [error] [client 67.180.34.0] 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.

Если мы попытаемся получить доступ к http://domain.com/cgi-bin/api.pl сценариюфункционирует правильно.Что мы делаем не так?Пожалуйста помоги!Заранее спасибо.

1 Ответ

2 голосов
/ 04 сентября 2010

Я предполагаю, что вы определяете свои правила в файле .htaccess, где флаг L может работать не так, как вы ожидали .

Поскольку ваш тестовый шаблон ^(.*)$ соответствует любому вводимому ему входу, URL-адрес, на который вы переписываете, также соответствует последующему запросу, и вы получаете внутренний бесконечный цикл перенаправления (что в итоге приводит к ошибке сервера).

Решение состоит в том, чтобы проверить, не переписали ли вы уже URL:

RewriteEngine on

RewriteCond %{REQUEST_URI} !=/cgi-bin/api.pl
RewriteCond %{HTTP_HOST} ^api.domain.com$ [NC]
RewriteRule ^.*$ /cgi-bin/api.pl [NC,L,QSA]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...