我正在尝试将一个网址重定向到https,将所有其他网址重定向到http 例如:如果我想访问example.com的登录页面,它应该重定向到https://example.com/login 如果我想访问登录以外的任何页面,则应将其重定向到http://example.com/any-other-page。 当前.htaccess代码:
RewriteEngine on
RewriteCond %{HTTPS} =on
RewriteRule !^(login) http://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]
DirectoryIndex index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
这很好用。登录以外的所有URL都重定向到http。 但是,如果我添加以下代码来重定向登录页面,它将被重定向到index.php
RewriteCond %{HTTPS} !=on
RewriteRule (login) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]
我想要的只是登录页面应重定向到https。但这种情况并没有发生。
提前致谢。
答案 0 :(得分:0)
您可以使用.htaccess
文件中的以下规则执行此操作:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteCond %{REQUEST_URI} ^\/(login)
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]
RewriteCond %{HTTP:X-Forwarded-SSL} =on
RewriteCond %{REQUEST_URI} !^\/(login)
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301]
第一组规则检查是关闭目录/login/
的HTTP关闭,如果关闭,则会强制它到HTTPs。
第二组规则检查HTTP是否打开,如果打开,则会关闭除/login/
目录之外的所有内容。
确保在>> 之前清除缓存。
注:
我不确定为什么你不希望所有内容都成为HTTP?...它会使一个更安全的网站,并允许你使用HSTS。