子文件夹的RewriteRule

时间:2018-10-31 08:44:08

标签: php .htaccess api mod-rewrite

我有一个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并将所有内容推送到api.sample.com上的index.php脚本,但不重定向它。

http://api.sample.com/path/to/endpoint应该在index.php中处理,但它会重定向到https://api.sample.com/index.php,我的路径已经消失了。

这是我到目前为止所拥有的。

render() {
  const GetHeader = this.GetHeader;
  return <GetHeader />;
}

示例: htdocs / api中的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]

我访问GET http://api.sample.com/path/to/endpoint,并希望打印出“ / path / to / endpoint”。

我的RewriteRule有什么问题?

预先感谢

1 个答案:

答案 0 :(得分:0)

这里是.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/