我试图得到一个失败的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
这是你所需要的
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的相关部分。