2013-01-23 133 views
2

所以所有的数据,这里的情况是:重定向通过HTTPS服务到http

我们正在运行的是由Drupal供电的网站。前段时间,决定将该网站用作SSL。将网站从http重定向到https的设置是由一个不在我们身边的人完成的。

我可以在.htaccess文件中看到以下行

#Redirect http to https 
RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://docs.dev.domain.com/$1 [R,L] 

mydomain.com指向LAMPP服务器的根和我的网站是Web根目录中的文件夹(docs.dev.domain.com在/我的网站)。

现在,已经决定不需要SSL,它必须被删除,并且所有页面必须通过http(301重定向)提供。

当我这样做,在使用RewriteRule重定向URL .htaccess文件(例如https://docs.dev.domain.com/mysite/content/book),以当用户访问HTTPS通过使用HTTP:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/favicon.ico 
RewriteRule^index.php [L] 


#Redirect HTTPS to HTTP 
RewriteCond %{SERVER_PORT} ^443$ 
#RewriteCond %{HTTPS} on 
RewriteRule ^(.*)$ http://docs.dev.domain.com/mysite/$1 [R=301,L] 
#even tried this - RewriteRule ^(.*)$ http://docs.dev.domain.com/$1 [R=301,L] 

,但在HTTPS每个请求重定向http://mydomain.com/mysite/index.php(即使是像https://docs.dev.domain.com/mysite/content/book/1这样的网址也应该被重定向到http)。

如何删除https以便我的动态网址通过纯http服务? 对不起,如果这是非常新手p roblem。

回答

1

这是因为您在重定向之前有一个路由规则。重写引擎将循环直到URI恢复为止,并且在那一点上,它将评估URI是否需要传递到其他模块以处理重定向或代理。

这意味着您的请求被路由到index.php,然后重写引擎循环,然后它看到请求(此时简单地为/index.php)需要重定向,因此请求被标记为重定向。然后mod_rewite重定向,但是现在,URI被您的路由规则所破坏。

您需要交换的顺序:

RewriteCond %{HTTPS} on 
RewriteRule ^(.*)$ http://docs.dev.domain.com/mysite/$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/favicon.ico 
RewriteRule^index.php [L] 
+0

它的工作!谢谢。 –

1

在Drupal启用SSL或禁用它通过启用/禁用模块非常简单的方法。你应该检查模块名称securepages &如果在那里,你只需要禁用它来禁用HTTPS ... 然后你可以去你的YOURSITE /网站/默认&看看settings.php &如果$ base_url被定义,那么只是从'HTTPS'中删除'S'。

你完成了......

我不认为这家伙启用它的.htaccess &,所以我给我的答案,你由Jon林回答解决即使它..

+0

我们必须购买SSL证书才能启用HTTPS,因为该网站位于生产服务器上。同时我们也看了一下securepages模块,看起来它没有D7的稳定版本;所以不能在生产服务器上使用它。所以,我们只能通过'.htaccess'来选择。无论如何,谢谢你的答案。你有我的+1 :-) –

+0

你没有提及的版本和我在D6制作的几个网站上使用它。我希望它会在D7中有稳定的版本... – RajeevK