我正在尝试设置一个 codeigniter 应用程序以在除一个页面之外的所有页面上强制使用 HTTPS。但是,如果用户不在相关页面上,我无法让规则仅重定向。
应排除的页面具有以下 URL:
- http://mydomain.com/kpi/reports/67
- http://mydomain.com/kpi/reports/67/overview/2013-02-01/2013-02-28
- http://mydomain.com/index.php?/kpi/reports/67
- http://mydomain.com/index.php?/kpi/reports/67/overview/2013-02-01/2013-02-28
数字67和日期都可以在上面的 URL 中更改,因此下面的正则表达式的用户。
我已经测试了正则表达式,它们似乎与 URL 匹配得很好。但是,htaccess 似乎只是将其重定向到 https:// 无论如何。
我的 .htaccess 文件如下...
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#Disallow access to system dir
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#Disallow access to application dir
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#Force https when not on overview report
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/index\.php\?/kpi/reports/?([0-9]+)$
RewriteCond %{REQUEST_URI} !^/index\.php\?/kpi/reports/?([0-9]+)/overview/?([0-9]+)-?([0-9]+)-?([0-9]+)/?([0-9]+)-?([0-9]+)-?([0-9]+)$
RewriteCond %{REQUEST_URI} !^/kpi/reports/?([0-9]+)$
RewriteCond %{REQUEST_URI} !^/kpi/reports/?([0-9]+)/overview/?([0-9]+)-?([0-9]+)-?([0-9]+)/?([0-9]+)-?([0-9]+)-?([0-9]+)$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=302,L]
#If not a valid file, redirect request through index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
任何帮助将不胜感激!