首页 文章

将一个网址重定向到https,将所有其他网址重定向到http

提问于
浏览
1

我正在尝试将一个URL重定向到https,将所有其他URL重定向到http ex:如果我想访问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 . 但这不会发生 .

提前致谢 .

1 回答

  • 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]
    

    第一组规则检查是HTTPs关闭目录 /login/ 如果它关闭,那么它将强制它到HTTPs .

    第二组规则检查HTTP是否打开,如果它打开,那么它将关闭除 /login/ 目录之外的所有内容 .

    确保清除缓存 before ,你测试它 .

    注意:

    我不确定为什么你不希望一切都是HTTP?...它会使一个更安全的网站,并允许你使用HSTS .

相关问题