我无法将http://example.com/test
重定向到https://example.com/test
。它总是会重定向到主页。我在谷歌搜索了几个小时,但没有解决方案。下面是我的.htaccess
:在htaccess中强制http https,总是重定向到主页
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule^- [E=protossl]
RewriteCond %{HTTPS} on
RewriteRule^- [E=protossl:s]
RewriteRule^- [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule "(^|/)\." - [F]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule^http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule^index.php [L]
<IfModule mod_headers.c>
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.js $1\.js\.gz [QSA]
RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1]
<FilesMatch "(\.js\.gz|\.css\.gz)$">
Header set Content-Encoding gzip
Header append Vary Accept-Encoding
</FilesMatch>
</IfModule>
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</IfModule>
<IfModule mod_headers.c>
Header always set X-Content-Type-Options nosniff
</IfModule>
我也不知怎么管理,以达到我想要的,通过注释:
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteCond %{REQUEST_URI} !=/favicon.ico
# RewriteRule^index.php [L]
但它会导致另一个问题,我的网站。当我访问后端系统时,我收到了404错误,并导致我的网站中断。任何人都可以指出我正确的方向吗?
它没有将网站重定向到https。现在,所有css,js和img都无法加载状态404. –
失败的CSS,JS和图像表示客户端HTML中的相对URL。但是,没有明显的理由说明,如果在您将_front控制器_注释掉之前重定向了,它将不会重定向。 SSL如何管理?我已经更新了我的答案 - 请注意,您的非www重定向的规范www也应该在文件的开头。将您更新的'.htaccess'文件发布到您的问题。 – MrWhite
我设法通过使用另一个drupal模块(seckit)来解决这个问题。谢谢你的帮助。 –