我想重定向到仅HTTPS /登录页面。其余页面需要是HTTP。
.htaccess文件如下所示:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} /login
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !/login
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php
我不知道为什么它不起作用。当我去/登录时,我被重定向到example.com/index.php 怎么了?
答案 0 :(得分:0)
目录中是否有实际(物理)/login
文件夹或文件?我想不是,所以你的/login
请求最终被最后一次重写规则捕获并重定向到index.php。
尝试在此行上方添加此RewriteCond %{REQUEST_URI} !/login
:RewriteCond %{REQUEST_FILENAME} !-f
(或者只是以不同的方式处理登录请求)
答案 1 :(得分:0)
尝试在上一个规则中添加L
标记,并将代码添加为:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ http://example.com%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} /login [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !/login [NC]
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]