【发布时间】:2011-02-07 07:20:19
【问题描述】:
我有一个常见的问题是希望将对某个受限访问目录的请求从 http 重定向到 https,以便以安全的方式发送用户的登录凭据。
但是,我的服务器上没有启用 mod_rewrite。我只有 mod_alias。这意味着我必须使用 RedirectMatch 命令。我不能使用使用 RewriteCond 和 RewriteRule 的常用解决方案。
(关于政治的说明:我是一个非常大的组织中的小型子站点维护人员,因此服务器管理员不太可能愿意为我更改服务器配置!)
以下行有效,但形成了一个无限循环(因为重写的 URL 仍然被初始正则表达式捕获):
RedirectMatch permanent ^/intranet(.*)$ https://example.com/intranet$1
我的一位内部 IT 人员建议我通过将文件移动到具有新名称的新目录(例如 /intranet2/)来避免无限循环。这对我来说似乎很丑陋。人们仍然可以通过直接访问http://example.com/intranet2/ 来意外/故意恢复到不安全的连接。
然后我尝试了这个,但是没有用:
RedirectMatch permanent ^http:(.*)/intranet(.*)$ https://example.com/intranet$1
我怀疑它不起作用,因为第一个参数必须是根目录的文件路径,所以它不能以“http:”开头。
那么:有什么更好的方法可以做到这一点吗?
【问题讨论】:
标签: .htaccess https redirect mod-alias