嵌套的RewriteRules

时间:2018-10-06 18:51:16

标签: apache .htaccess

我有一个根目录,其中有.htaccess,其中定义了哪些子文件夹需要使用HTTPS。定义如下:

<If "\
%{REQUEST_FILENAME} =~ m#/subfolder-1/.*$# || \
\
...
\
%{REQUEST_FILENAME} =~ m#/subfolder-n/.*$# || \
\
">

    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
</If>

它可以很好地满足我的所有目的,但是,在那些子文件夹之一中,我指定了一个重写规则,以使对API的调用看起来更好。 /subfolder-n/.htaccess如下所示:

RewriteEngine On
RewriteRule api/(.*)$ api.php?request=$1

当我尝试通过重写的URL(例如.../api/endpoint)调用API时,它可以正常工作,而直接调用(例如.../api/api.php?request=endpoint)则可以正常工作。如果我在根目录(即关于HTTPS的目录)中禁用了重写规则,则该API规则会突然生效。

您知道问题出在哪里吗?另外,实现此目标的正确方法是什么?请注意,我想将HTTPS重写条件保留在根.htaccess中,以便始终可以清楚地知道哪些文件夹需要它,哪些不需要。

谢谢

0 个答案:

没有答案