我想让阿帕奇:
- 将 http 用户重定向到 https
- 如果他们访问 http(s)://example.com/1234 重定向到 /view/1234
我尝试过不同的口味,但无法正常工作。当用户访问该网站时,他们会被重定向到 https://,但是我无法让 /{numeric} 重定向到添加 /view/。在我打开 https 重定向之前,数字规则工作正常。
我已经尝试使用 RewriteCond %{HTTPS} = on,但这会导致 500 个错误。
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://domain.example.org/$1 [R,L]
RewriteRule ^(\d+)$ https://domain.example.org/view/$1 [R=301,L]
这对你不起作用吗?
试试这个来测试:
http://htaccess.madewithlove.be/
好吧,听起来你真的想要这样的东西:
将第一个 RewriteCond 替换为:
这将是一个即兴的答案,但是,我相信重写规则在先到先得的基础上匹配。由于路径结构发生变化,我敢打赌您的http://domain.example.org/1234用户将被重定向到等效的 https,但路径没有变化。尝试切换规则的顺序,您将更接近于完整的解决方案。
如果这不起作用,请告诉我,我将启动一个 Apache 实例,我们将看看我们可以协同工作的结果。
谢谢你的帮助。
我终于让它工作了。我使用了以下内容:
因此,任何数字请求都添加了 /view,任何使用 http:// 访问站点的尝试都会被转发到 https://。似乎运作良好。