У меня есть файл htaccess, в котором я перенаправляю каждый HTTP-запрос на https. http://sample.com/a/b/c -> https://sample.com/a/b/c
Это работает, пока все хорошо. Теперь у меня есть подпапка как поддомен. htdocs / api доступен через http://api.sample.com/x/y/z
Всякий раз, когда кто-то запрашивает поддомен api, я хочу, чтобы он перенаправлял на https и отправлял все в скрипт index.php на api.sample.com, но не перенаправлял его.
http://api.sample.com/path/to/endpoint следует обрабатывать в index.php, но он перенаправляет на https://api.sample.com/index.php, и мой путь пропал.
Это то, что у меня есть до сих пор.
DirectoryIndex index.php
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^api\. [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/index.php [L,QSA]
Пример: index.php в htdocs / api
$uri = parse_url($_SERVER['REQUEST_URI']);
print $uri['path'];
Я захожу в GET http://api.sample.com/path/to/endpoint и хочу, чтобы был распечатан «/ path / to / endpoint».
Что не так с моим RewriteRule?
заранее спасибо






Вот пример .htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
# To append a query string part in the substitution string
RewriteRule ^([0-9a-z_/\-]+)/$ index.php\?p=$1 [QSA]
RewriteRule ^([0-9a-z_/\-]+)$ index.php\?p=$1 [QSA]
php_flag allow_url_include on
</IfModule>
Вот мой index.php и чтение файла из подпапки
session_start();
if (isset($_GET['p'])) {
if (isset($_GET['p'])) {
$request=explode('/',$_GET['p']);
include 'subfolder/'.$request[0].'.php';
}
}
else {
include 'subfolder/default.php';
}
Где подпапка / - имя вашей папки
Вот образцы сайта, который я разбираю https://andre.cloudmanado.store/