Я использую codeigniter в качестве основной установки в основном домене. Я создал поддомен и папку под названием live, например. live.domain.com сопоставляется с общедоступным / live. Однако публично я использую codeigniter.
Теперь у меня есть динамический URL-адрес codeigniter:
http://domain.com/api/
который я хочу сопоставить со своим поддоменом:
https://live.domain.com
Итак, собираемся:
https://live.domain.com/api/functioname
будет использовать сценарий:
http://domain.com/api/apifunctioname
и возможно:
http://domain.com/api/apifunctioname/parameter1/parameter
Все находится на одном сервере, поэтому перенаправления не требуются.
У кого-нибудь есть идеи, какие правила перезаписи использовать?
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^live\.domain\.com [NC]
RewriteRule (.+)$ "http://domain.com/api/$1" [L]
Вышеупомянутое отлично работает как перезапись, но вместо этого перенаправляет на http://domain.com/api/functionname, я хочу, чтобы он маршрутизировал; так что, собираясь:
https://live.domain.com/api/functioname
Он остается на этом URL-адресе, но использует сценарий
http://domain.com/api/functionname
Большое Вам спасибо,
Лед

Как насчет следующего:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^live\.domain\.com$ [NC]
RewriteRule (.+)$ "https://domain.com/api/$1" [L,P]
Я должен, наверное, упомянуть, что это не проверено. Вы пробовали увеличить уровень логирования mod_rewrite и анализировали, что именно происходит?
У вас должен быть «^ live \ .domain \ .com» в качестве RewriteCond, и должен быть второй RewriteCond, проверяющий URL-адреса / api /.
Я искал свой сервер, но нигде не могу найти файлы журнала; Я искал rewrite.log
Также, когда я устанавливаю RewriteLogLevel 3 в .htaccess, я получаю ошибку 500
@Tomalak: Согласен, он обязательно должен это сделать. @Ice: вы можете указать файл журнала с помощью директивы RewriteLog.
@jensen Я пробовал, но получил ошибку 500; также с некоторой помощью Twitter я определил проблему перезаписи; удаление ^ / исправляет его, однако я не пытаюсь переписать URL-адрес, а сопоставить его с ним
Не могли бы вы опубликовать то, что у вас получилось до сих пор?
Вместо [L] в качестве флагов для RewriteRule попробуйте [L, P], iirc, который должен выполнять внутренний запрос прокси.
Спасибо; однако это изменение привело к тому, что ошибка 404 не найдена
У вас включен mod_proxy?
@jensen Великолепно! Он должен был включить mod_proxy и mod_proxy_http, но тогда это сработало! : D
Я нашла: RewriteCond% {HTTPS} = on
Просто добавьте index.php, см. Ниже
RewriteEngine On
RewriteCond %{HTTP_HOST} ^live\.domain\.com$ [NC]
RewriteRule (.+)$ "https://domain.com/index.php/api/$1" [L,P]
Спасибо, однако я попробовал, но только что получил 404 Not Found - очень странно