2

所以,情况如下:

我们正在运行一个由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 服务器的根目录,而我的站点位于 webroot (docs.dev.domain.com/mysite) 内的文件夹中。

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

当我在 .htaccess 文件中执行此操作时,当用户使用以下方式访问 https 时,使用RewriteRule将 URL(例如https://docs.dev.domain.com/mysite/content/book)重定向到 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 提供动态 URL?对不起,如果这是一个非常新手的问题。

4

2 回答 2

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]
于 2013-01-23T08:09:15.357 回答
1

通过启用/禁用模块,在 Drupal 中启用或禁用 SSL 非常简单。你应该检查模块名称securepages&如果它在那里你只需要禁用它来禁用HTTPS......然后你可以去你的YOURSITE/sites/default&查看settings.php&如果定义了$base_url然后删除来自“HTTPS”的“S”。

你完成了...

我认为那个人没有从 .htaccess 中启用它,所以即使你通过 Jon Lin 的回答解决了它,我也给出了答案。

于 2013-01-24T05:38:25.173 回答