我已为我的生产网站实施了SSL安全性。我的httpd.conf文件中实现此目的的代码如下:
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / https://www.example.com/
</VirtualHost>
这很好用,所有请求总是通过https重定向。
我的服务器上有一个signup.html页面。我想在我的名片,印刷营销材料等上宣传注册页面的URL路径,要求读者注册
www.example.com/signup
为了实现这一点,我在httpd.conf中添加了以下内容
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / https://www.example.com/
Redirect /signup https://www.example.com/signup.html
</VirtualHost>
但这不起作用。它给我一个404错误:/ signup not found。
重定向/ signup在我的测试服务器中运行良好,该服务器未启用SSL。所以我猜它与我的redirect语句如何处理其他SSL重定向语句有关。
感谢您的帮助。
由于
答案 0 :(得分:0)
对于www.example.com/signup
apache正在选择此规则,因为首先出现
Redirect permanent / https://www.example.com/
且https://www.example.com/signup
不存在
请参阅apache文档https://httpd.apache.org/docs/current/mod/mod_alias.html
其次,别名和重定向按照它们在配置文件中出现的顺序进行处理,第一次匹配优先
尝试更改顺序
<VirtualHost *:80>
ServerName www.example.com
Redirect /signup https://www.example.com/signup.html
Redirect permanent / https://www.example.com/
</VirtualHost>
答案 1 :(得分:0)
尝试移动Redirect / ...
行上方的<VirtualHost *:80>
ServerName www.example.com
Redirect permanent /signup https://www.example.com/signup.html
Redirect permanent / https://www.example.com/
</VirtualHost>
行。像这样:
var date = new Date();
var today = new Date(date.getFullYear(), date.getMonth(), date.getDate());
$('#date').datepicker({
minDate: today
});
您可能需要清除浏览器缓存以清除所有已保存的永久重定向。