0

1つを除くすべてのページでHTTPSを強制するようにcodeigniterアプリをセットアップしようとしています。ただし、ユーザーが問題のページにいない場合にのみリダイレクトするルールを取得できません。

除外する必要のあるページには、次のURLがあります。

数字の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>

どんな助けでも大歓迎です!

4

1 に答える 1

1

多分これはあなたが必要とすることをするでしょう:

#Force https when not on overview report
RewriteCond %{HTTPS} off
RewriteCond %{QUERY_STRING} !kpi/reports/[0-9]+/?$                     [NC]  
RewriteCond %{QUERY_STRING} !kpi/reports/[0-9]+/overview/[^/]+/[^/]+/? [NC]
RewriteCond %{REQUEST_URI}  !kpi/reports/[0-9]+/?$                     [NC]
RewriteCond %{REQUEST_URI}  !kpi/reports/[0-9]+/overview/[^/]+/[^/]+/? [NC]
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI}           [R=302,L]

#If not a valid file, redirect request through index.php

コメント間のすべての行を置き換えます。

于 2013-03-08T15:30:00.060 に答える