情况如下:
我们正在运行一个由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 文件中通过使用RewriteRule
重定向 URL 来执行此操作时(例如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,以便我的动态 URL 通过纯 http 提供?抱歉,这是新手常遇到的问题。
答案1
交换文件中的顺序后,它就可以正常工作了.htaccess
。
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]