2012-04-12 40 views
0

我想在同一台服务器上从http移动到https。所有页面,文件等都需要转发到https,除了使用iFrame嵌入在几个网站上的四个页面。由于https不能包含在iframe中,我想离开这些但添加其他所有内容。301 htaccess重定向一切,但现有网页

我在htaccess上玩了一个多小时,但没有成功。最新的试用如下。但在这个例子中,我需要自己写下文件。我想将http服务器上不存在的所有内容转发给https服务器,并保持原样。

RewriteCond %{HTTPS} = off 
RewriteCond $1 !^(inschrijven-frame|inschrijven-frame2)\.php$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ https://www.url.nl/$1 [R=301,L] 

什么需要做的是:

  1. 如果该文件是在HTTP上打开它。
  2. 如果文件不是HTTP,转到HTTPS,所以http://www.url.com/test.php自动成为未在2发现https://www.urlcom/test.php
  3. 页,应被转发到去对HTTPS主域名
+1

** 1)**此行错误'RewriteCond%{HTTP} = on' - 它应该是'RewriteCond%{HTTPS} =关闭[NC] ** 2)**您使用错误的字符对于OR正则表达式逻辑 - 应该是'|'而不是'|'。 – LazyOne 2012-04-12 13:18:09

+0

感谢LazyOne,如果http文件在那里,您是否也有建议不要去https? – mat 2012-04-13 06:41:53

+0

使用这个:'RewriteCond%{REQUEST_FILENAME}!-f'。解释/文档在这里:http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond – LazyOne 2012-04-13 08:40:51

回答

0

我想我解决了它。这个可以吗?

RewriteEngine on 
RewriteBase/

RewriteCond %{SERVER_PORT} 443 
RewriteRule ^(page1|page2|test1|test2)\.php$1 [R,L] 

RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} !^/ipage 
RewriteCond %{REQUEST_URI} !^/test 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

@LazyOne如果您发布的答案我可以接受它。