2014-09-13 118 views
1

我想所有的以下htaccess以及正则表达式为重定向多个样式

example.com 
http://example.com 
https://example.com 
http://www.example.com 

的重定向到

https://www.example.com 

我有这样的:

RewriteEngine on 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
RewriteRule ^/(.*):SSL$ https://%{SERVER_NAME}/$1 [R,L] 


Options +FollowSymlinks 
RewriteCond %{HTTP_HOST} !^www.example.com 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=permanent,L] 

这两个以下是工作,

http://www.example.com 
https://example.com 

但最后一个显示为:

https://www.example.com/https://example.com/ 

我怎样才能解决这个所以所有三个正确重定向到https://www.example.com

感谢您的帮助。通过

https://www.$1$2

观看演示

回答

1

所有你想要可以在一个单一的规则就像这样:

RewriteEngine on 

RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule^https://www.example.com%{REQUEST_URI} [L,NE,R=301] 

确保这是你的根的.htaccess的第一个规则。

+1

是的!谢谢你,你第一次开箱即可钉上我的噩梦一天,对你的帮助是更好的 – AllThisOnAnACER 2014-09-13 19:13:53

+0

你非常欢迎,很高兴它的工作。一天中有一个很好的休息。 – anubhava 2014-09-13 19:14:49

0
^(?:.*?:)?(?:\/\/)?(?:.*?\.)?(.*?\.)(.*)$ 

尝试this.Replace。

http://regex101.com/r/lU7jH1/6

+0

谢谢你。嗯,因为这些看起来都不像我原来的代码,你想让我坚持下去吗? :-) 从演示中,它看起来正是我需要的,但我不想在我的.htaccess文件中犯太多错误。您能否更具体地使用我的原始代码作为开始? – AllThisOnAnACER 2014-09-13 18:48:21

+0

为什么选择投票? – AllThisOnAnACER 2014-09-13 19:02:01

+0

只是因为正则表达式能够匹配给定的URL并不意味着这个正则表达式也适用于'mod_rewrite'。 – anubhava 2014-09-13 19:06:21