Правила перезаписи .htaccess для поддомена

Я использую 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

Большое Вам спасибо,

Лед

Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
8
0
15 773
2

Ответы 2

Как насчет следующего:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^live\.domain\.com$ [NC]
RewriteRule (.+)$ "https://domain.com/api/$1" [L,P]

Спасибо, однако я попробовал, но только что получил 404 Not Found - очень странно

Ice 14.12.2008 17:45

Я должен, наверное, упомянуть, что это не проверено. Вы пробовали увеличить уровень логирования mod_rewrite и анализировали, что именно происходит?

Simon B. Jensen 14.12.2008 17:58

У вас должен быть «^ live \ .domain \ .com» в качестве RewriteCond, и должен быть второй RewriteCond, проверяющий URL-адреса / api /.

Tomalak 14.12.2008 18:09

Я искал свой сервер, но нигде не могу найти файлы журнала; Я искал rewrite.log

Ice 14.12.2008 18:12

Также, когда я устанавливаю RewriteLogLevel 3 в .htaccess, я получаю ошибку 500

Ice 14.12.2008 18:25

@Tomalak: Согласен, он обязательно должен это сделать. @Ice: вы можете указать файл журнала с помощью директивы RewriteLog.

Simon B. Jensen 14.12.2008 19:05

@jensen Я пробовал, но получил ошибку 500; также с некоторой помощью Twitter я определил проблему перезаписи; удаление ^ / исправляет его, однако я не пытаюсь переписать URL-адрес, а сопоставить его с ним

Ice 14.12.2008 19:13

Не могли бы вы опубликовать то, что у вас получилось до сих пор?

Simon B. Jensen 14.12.2008 19:18

Вместо [L] в качестве флагов для RewriteRule попробуйте [L, P], iirc, который должен выполнять внутренний запрос прокси.

Simon B. Jensen 14.12.2008 19:34

Спасибо; однако это изменение привело к тому, что ошибка 404 не найдена

Ice 14.12.2008 19:38

У вас включен mod_proxy?

Simon B. Jensen 14.12.2008 19:41

@jensen Великолепно! Он должен был включить mod_proxy и mod_proxy_http, но тогда это сработало! : D

Ice 14.12.2008 19:50

Я нашла: RewriteCond% {HTTPS} = on

Ice 14.12.2008 19:59

Просто добавьте index.php, см. Ниже

RewriteEngine On
RewriteCond %{HTTP_HOST} ^live\.domain\.com$ [NC]
RewriteRule (.+)$ "https://domain.com/index.php/api/$1" [L,P]

Другие вопросы по теме