重定向网址无效

时间:2016-12-28 15:34:15

标签: apache .htaccess redirect ssl

我已为我的生产网站实施了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重定向语句有关。

感谢您的帮助。

由于

2 个答案:

答案 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
});

您可能需要清除浏览器缓存以清除所有已保存的永久重定向。