Force https: // www. pour Codeigniter dans htaccess avec mod_rewrite
J'utilise Codeigniter et suivants ces instructions pour forcer le ssl, mais toutes les demandes sont en train d'être redirigé vers
http://staging.example.com/index.php/https:/staging.example.com
Mon .htaccess
est:
### Canonicalize codeigniter URLs
# Enforce SSL https://www.
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
###
# Removes access to the system folder by users.
# Additionally this will allow you to create a System.php controller,
# previously this would not have been possible.
# 'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
# Checks to see if the user is attempting to access a valid file,
# such as an image or css document, if this isn't true it sends the
# request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
source d'informationauteur Ben
Vous devez vous connecter pour publier un commentaire.
Je pense que, au lieu de
vous devriez avoir quelque chose comme
ont la règle de réécriture de match. Votre lien est actuellement produite par la troisième règle.
Vous pourriez le faire dans le code au lieu d'utiliser htaccess.
Vous pouvez créer une fonction d'aide qui va rediriger la page à l'aide du protocole SSL, qui vous appelez à partir de votre contrôleur.
De votre aide;
Puis dans votre contrôleur;
Utiliser cette
au lieu de
Sans doute vous avez
RewriteEngine On
quelque part au-dessus de ce code...ne va pas probablement d'être déclenchée. REQUEST_URI doit commencer par /(à la différence des règles de réécriture), de sorte que vous voudrez probablement
Je ne suis pas sûr que
sera fiable de match, avec ^. Je voudrais essayer le suivant:
D'ailleurs, HTTP_HOST est normalement ce que le visiteur a tapé dans l', donc www. n'est pas garanti, si c'est ce que vous voulez. Vous aurez besoin d'une étape distincte de la force http://www..
J'ai écrit la classe suivante à cette fin. Je préfère avoir des trucs comme ça dans le code sur un fichier de configuration, de sorte que le comportement ne peut pas être modifié par une mauvaise config (c'est à dire une page est vraiment "forcé" de SSL).
La fonction doit être appelée à un stade précoce de votre site, du processus de chargement.
Espère que cela aide.