我有一个根目录,其中有.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中,以便始终可以清楚地知道哪些文件夹需要它,哪些不需要。
谢谢