我的根目录中有一个简单的.htaccess文件,它将所有请求重定向到https:
Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine On
#HTTPS
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R,L]
</IfModule>
这对于所有请求都很好-将所有请求重定向到https。
在子文件夹images
中,我创建了另一个.htaccess文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /images/
#LOGO
RewriteRule ^(([0-9]{5})|test)/logo\.png$ image.php?id=$1 [L]
</IfModule>
这正常工作,当我请求https://example.com/images/12345/logo.png
时,我从PHP脚本获得了响应。
但是,当我在没有ssl(http://example.com/images/12345/logo.png
)的情况下执行相同的请求时,我没有重定向到http s 。
当我执行其他请求时,例如http://example.com/images/other.png
,我的服务器正在返回该图像,但是没有重定向到https。删除子目录中的.htaccess
文件后,重定向到https即可。
看起来子目录中的.htaccess
正在覆盖父目录中的规则。
有没有办法设置.htaccess
来扩展父目录中的规则,而不是覆盖它们?
我想在我的根目录的.htaccess中指定全局规则,并在特定的文件夹中添加特定的规则。这有可能吗?