我有一个网站与我的前端控制器在一个子目录。然后我想透明地重定向根文件夹的网站到子目录。此外,我已经启用了SSL,并希望为站点强制使用它。
通过在.htaccess
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ web/$1 [QSA,L]
</IfModule>
所以我决定添加https到RewriteRule
这样:RewriteRule ^(.*)$ https://my-domain-name.com/web/$1 [QSA,L]
。但我没有得到我想要的。事实上,我得到https强制,但透明根文件夹到子目录重定向不再工作了。我得到了我的地址栏:https://my-domain-name.com/web
虽然我的愿望是https://my-domain-name.com
。
您添加的规则被隐式地视为重定向。只要把它放在web/重写的规则之前。这允许您先更改协议,然后在请求返回https后继续进行内部重写。
编辑:更多关于HTTPS重定向的细节:https://wiki.apache.org/httpd/RewriteHTTPToHTTPS