PHP и перенаправление с apache2.conf - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть внутренний домен, такой как

live.domain.com

, который я определил на доступных сайтах, например,

ServerName live.domain.com

    ServerAdmin webmaster@localhost
    DocumentRoot /data/www/html/mydomainnamenodots 

        <Directory /data/www/html/mydomainnamenodots>
           Require all granted
        </Directory>

и, соответственно, тот же для SSL conf.

У меня есть папка / api , которая находится там как / data / www/html/mydomainnamenodots/api

Я хочу перехватывать все вызовы на live.domain.com/api/*

и перенаправить их на что-то вроде live.domain.com/api/index.php?url=*

Так что реальный пример будет

live.domain.com/api/statistics/getFTE/123/456

, и я бы хотел, чтобы это было

live.domain.com/api/index.php?url=/statistics/getFTE/123/456

Это может привести к $ _REQUEST в индексе. php примерно так:

array(1) {["url"]=>string(33) "/statistics/getFTE/123/456"}

mod_rewrite включен и загружен , Работают простые тесты с перенаправлениями из файла в файл.

Мое правило перезаписи, которое не работает, поскольку оно не перенаправляет, является

<Directory "/data/www/html/mydomainnamenodots/api">
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*?mydomainnamenodots\/api(.*)$ /mydomainnamenodots/api/index.php?url=$1 [QSA,L]
</Directory>

Есть идеи, почему это не работает? Я скучаю по RewriteBase или как-то еще?

Заранее спасибо

Alex

1 Ответ

0 голосов
/ 20 февраля 2020

Поскольку поддомен уже указывает на подпапку, она должна быть соответствующей подпапке ниже той, которая находится в определении каталога. Кроме того, я также изменил регулярное выражение.

Вот что у меня сработало:

<Directory />
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^.*\/api(\/.*)$ /api/index.php?url=\/$1 [QSA,L]
</Directory>
...