redirect非www sslstream量到www ssl(apache)

我试图得到一个失败的redirect,出于某种原因,我今天想不出来。 我在HTTPD中有一个vHost文件,用于监听标准端口80和端口443.我试图将https://domain.com/(。* )redirect到https://www.domain.com/ $ 1,url保持不变。

我的configuration如下:

ServerName www.domain.com
ServerAlias tempdomain.testdomain.co.uk
ServerAlias domain.com

我正在使用的重写规则是。

RewriteCond%{HTTP_HOST} ^ domain \ .com $
RewriteRule ^(。*)$ https://www.domain.com $ 1 [R = 301,L]

我也尝试删除\。 和$但没有..当我访问的urlhttps://domain.com/secure.page?action=comp它不redirect到https://www.domain.com/secure.page?action=comp我也有其他的SSL页面,上面只是一个例子..

任何人都可以指出我的愚蠢。

我看不出你的重写规则有什么问题。 你确定 :

RewriteEngine on 

已经指定,这个configuration肯定正在执行? 它在.htaccess文件中?

尝试设置一个重写日志,它可以帮助:

http://www.latenightpc.com/blog/archives/2007/09/05/a-couple-ways-to-debug-mod_rewrite

除了使用重写之外,请启用HTTP严格传输安全性。 这很容易,并有助于防御访问者的中间人攻击。

 # load module (example using [RHEL]) LoadModule headers_module modules/mod_headers.so # Use HTTP Strict Transport Security to force client to use secure connections only Header set Strict-Transport-Security "max-age=86400" Header append Strict-Transport-Security includeSubDomains 

http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security

这是你所需要的

 RewriteCond %{HTTP_HOST} ^domain\.com RewriteRule ^(.*)$ https://www.domain.com$1 [R=permanent,L] 

这个规则在Apache 2.2中肯定适用于我

我认为你错过了你的configuration中的“RewriteEngine On”行,下面是一个例子:

 ServerName www.domain.com ServerAlias tempdomain.testdomain.co.uk ServerAlias domain.com RewriteEngine On RewriteRule /.* https://www.domain.com/ [R] 

谢谢,希望它能起作用,RayQuang

尝试启用RewriteLog,看看是否显示错误是什么。 在你的httpd.conf文件(或者在你的<VirtualHost>指令)中添加如下内容:

 RewriteLog "/path/to/some/file.log" RewriteLogLevel 9 

不要保持这样的!!!!!! RewriteLogLevel 9 非常慢,所以不应该像生产中那样使用,只是为了testing。 但启用(并重新加载Apache当然),并检查日志文件,看看会发生什么,当你去https://domain.com/secure.page?action=comp

如果您仍然不清楚问题,请编辑您的问题并发布rewritelog的相关部分。