将codeigniter网址格式从http排除到https重定向

时间:2015-05-29 23:37:01

标签: .htaccess codeigniter url-rewriting

我有一个codeigniter项目。这是它的.htaccess文件:

RewriteEngine on

#HTTPS redirection    
RewriteCond %{HTTPS} =off
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

#CodeIgniter Rules
RewriteCond $1 !^(index\.php|css|img|js|fonts|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

基本上我将所有非https流量重定向到https。我的问题是我要从此重定向中排除一个 codeigniter控制器及其所有URL 。一些控制器URL结构是:

http://example.com/external/?url=blablabla
http://example.com/external/
http://example.com/external/out/543260
http://example.com/external?goto=blablablabla

所以这些是codeigniter网址。它们不是文件或目录。我已经尝试过每一个可能的RewriteCond来排除这些网址,但它不起作用。

如何从HTTP中排除这些 codeigniter路由网址 - > HTTPS重定向?

1 个答案:

答案 0 :(得分:0)

我想我知道问题出在哪里。 / external /是一个codeigniter模块,因此,它被重写为/index.php?/external。 index.php被重写为HTTPS,这就是它被重写为HTTPS的原因。我所要做的就是从HTTPS重写规则中排除index.php?/ external。