我有一个 Apache 服务器 ( https://mysite.com/sub/en/ )。它在端口 443 和 VirtualHost 标记中使用 SSL 设置:
<VirtualHost _default_:443>
Redirect permanent /sub https://mysite.com/sub/en/
...
</VirtualHost>
基本上,当用户访问网站时,我希望他们被强制转到“/en”子目录。但是,如果您尝试访问 <a href="https://mysite.com/sub" rel="noreferrer noopener nofollow">https://mysite.com/sub</a>
,它不会将您重定向到子“/en”目录。
我真的不知道发生了什么。我的非 SSL 虚拟主机标签中确实有类似的设置:
<VirtualHost *:80>
Redirect permanent / https://mysite.com/sub/en/
Redirect permanent /sub https://mysite.com/sub/en
</VirtualHost>
这些规则工作正常。因此,如果用户尝试 <a href="http://mysite.com/sub" rel="noreferrer noopener nofollow">http://mysite.com/sub</a>
,它将它们转发到 SSL 版本,以及我想要的“/en”子目录。但是,如果您尝试使用 SSL 版本:<a href="https://mysite.com/sub" rel="noreferrer noopener nofollow">https://mysite.com/sub</a>
, 转发失败。
我的配置有误吗?我没有使用正确的重定向或重写规则吗?
最佳答案
为了让这个按照我想要的方式工作,我最终使用了 RewriteRule:
RewriteRule ^/sub$ https://mysite.com/sub/en/
这似乎已经成功了。
关于HTTPS 中的 Apache 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14775035/