我有一个 apache 服务器,它在不同的端口使用两个 SSL 域(不支持 SNI),有点像这样:
我有重写规则要重定向http://host2.tld:80到 :444 (对 host1 也一样)。然后出现问题:
我在 host2 根目录下有一个文件夹“folder”。如果我尝试访问http://host2.tld/文件夹/,一切都很好,我最终https://host2.tld:444/文件夹/正如预期的那样。现在,如果我输入http://host2.tld/文件夹,apache 将我重定向到http://host2.tld:444/文件夹/,但它并不存在。
由于从“文件夹”到“文件夹/”的重定向是自动完成的,我该怎么做才能解决我的问题?
Mod-rewrite 配置:
<VirtualHost *:80>
ServerName host2.tld
RewriteEngine On
RewriteRule (.*) https://%{HTTP_HOST}:444%{REQUEST_URI} [R=301,L]
</VirtualHost>
答案1
从重写规则中删除 L。该选项表示该规则是“最后”一条规则,不会再进行重写。
当您转到http://host2.tld/folder
它时,它会重写 uri 以添加斜线,但不会进行任何进一步处理。
您可能还想/需要在重写中添加一个条件,以防止每次请求时出现循环。