Я предполагаю, что вы определяете свои правила в файле .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]