it-swarm.com.de

So leiten Sie http zu https in Codeigniter um

Punkt 1 Wenn ich Folgendes eingebe:

www.myurl.com/somepage
http://www.myurl.com/somepage
http://myurl.com/somepage
https://myurl.com/somepage

habe es weiterleiten

https://www.myurl.com/somepage

Punkt # 2

When I type in something like www.myurl.com it is redirecting to https://www.myurl.com/index.php.
Make it so the index.php is not displaying. It should just display https://www.myurl.com

Aus Kommentar htaccess

RewriteEngine On 
RewriteCond %{HTTP_Host} ^myhost\.com$ [NC] 
RewriteRule ^(.*)$ myhost.com/$1 [R=301,L] 
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /index\.php(/[^\ ]*)?\ HTTP/ 
RewriteRule ^index\.php(/(.*))?$ myhost.com/$2 [R=301,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
13
asiya khan

Jetzt habe ich eine Lösung, Ich habe meine Htaccess-Datei aktualisiert.

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_Host} !^www\. [OR]
RewriteCond %{HTTP_Host} ^myhost\.com$ [NC]
RewriteRule ^ https://www.myhost.com%{REQUEST_URI} [R=301,L,NE]
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /index\.php(/[^\ ]*)?\ HTTP/ 
RewriteRule ^index\.php(/(.*))?$ myhost.com/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Nun, es hat reibungslos für mich funktioniert .. :)

4
asiya khan

Bitte überprüfen Sie, ob dies helfen kann

Konfigurationsänderungen: - Gehen Sie zu "application/config/config.php" und aktivieren oder setzen Sie die Hooks auf true.

$config['enable_hooks'] = TRUE;

erstellen Sie eine neue Datei namens hooks.php in "application/config/hooks.php" und fügen Sie den folgenden Code in hooks.php hinzu: -

$hook['post_controller_constructor'][] = array(
                                'function' => 'redirect_ssl',
                                'filename' => 'ssl.php',
                                'filepath' => 'hooks'
                                );

Erstellen Sie nun ein neues Verzeichnis mit dem Namen "hooks" unter Anwendungsverzeichnis und erstellen Sie dann unter "application/hooks/ssl.php" .__ eine neue Datei mit dem Namen "ssl.php".

function redirect_ssl() {
    $CI =& get_instance();
    $class = $CI->router->fetch_class();
    $exclude =  array('client');  // add more controller name to exclude ssl.
    if(!in_array($class,$exclude)) {
      // redirecting to ssl.
      $CI->config->config['base_url'] = str_replace('http://', 'https://', $CI->config->config['base_url']);
      if ($_SERVER['SERVER_PORT'] != 443) redirect($CI->uri->uri_string());
    } 
    else {
      // redirecting with no ssl.
      $CI->config->config['base_url'] = str_replace('https://', 'http://', $CI->config->config['base_url']);
      if ($_SERVER['SERVER_PORT'] == 443) redirect($CI->uri->uri_string());
    }
}
15
Preetham Hegde

Ich habe vor allem versucht, aber sie funktionierten in meinem Fall nicht richtig. Ich habe unten eine Lösung gefunden, die in meinem Fall funktioniert. Ich hoffe, es wird auch für Sie hilfreich sein.

RewriteEngine on

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]

RewriteCond $1 !^(index\.php|resources|robots\.txt|public)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
8
Nioya

Gehen Sie zuerst zur Datei application/config/config.php und suchen Sie nach dieser Zeile:

$config['base_url'] = "";

Setzen Sie es mit dem https auf Ihre URL, z. https://example.com 

$config['base_url'] = "https://example.com";

Gehen Sie dann zu Ihrer .htaccess-Datei und fügen Sie diese Zeile in das unten angegebene Beispiel ein.

RewriteRule ^ (. *) $ https://example.com/ $ 1 [R, L]

<IfModule mod_rewrite.c>

    #Options +FollowSymLinks
    #Options -Indexes
    RewriteEngine on

    # Send request via index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
    RewriteRule ^(.*)$ https://example.com/$1 [R,L]


</IfModule>
0
Oteng Kwame

ja das ja

   RewriteEngine On
   RewriteCond %{HTTPS} off [OR] 
   RewriteCond %{HTTP_Host} !^www\. [OR]
   RewriteCond %{HTTP_Host} ^myhost\.com$ [NC]
   RewriteRule ^ https://www.myhost.com%{REQUEST_URI} [R=301,L,NE]
   RewriteCond %{THE_REQUEST} ^[A-Z]+\ /index\.php(/[^\ ]*)?\ HTTP/ 
   RewriteRule ^index\.php(/(.*))?$ myhost.com/$2 [R=301,L]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ index.php/$1 [L]

funktioniert, aber Sie müssen eine leichte Bearbeitung vornehmen. Ersetzen Sie in der codeiginiterfolder/application/config.php-Datei http durch https

Außerdem muss die Basis-URL im obigen Code die myhost durch Ihren Hostnamen ersetzen. Nehmen wir an, mein Hostname internetseekho.com, so dass Sie statt myhostinternetseekho schreiben.

0
interntseekho

Wenn Sie den Fehler"Keine Eingabedatei angegeben" "finden, fügen Sie"? "Ein. in der letzten Zeile 

RewriteRule ^ (. *) $ Index.php /? $ 1 [L]

in der Antwort von @asiya khan

0
hitesh balyan

für mich funktionierte keine der obigen Antworten, da sie mir zu viele Weiterleitungen zeigte, aber diese funktionierte wie ein Zauber. Daher dachte ich zu teilen, wenn jemand anderes in ein ähnliches Thema gerät:

RewriteEngine on

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (sale|success|cancel) [NC]
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !(static|sale|success|cancel) [NC]
RewriteRule ^(.*)$ http://%{HTTP_Host}%{REQUEST_URI} [R=301,L]

RewriteCond $1 !^(index\.php|resources|robots\.txt|static) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
0
harshal lonare

Unser SSL stammt vom CloudFlare-CDN und daher funktionieren die oben genannten Lösungen nicht. 

Der folgende SSL-Erkennungscode (in SSL.php basierend auf @Preetham Hegde-Lösung) funktioniert:

$isSecure = false;
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
    $isSecure = true;
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') {
    $isSecure = true;
}
$REQUEST_PROTOCOL = $isSecure ? 'https' : 'http';


if ($REQUEST_PROTOCOL=="http")
{
    $redirect = 'https://' . $_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI'];
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: ' . $redirect);
    exit();
}
0
James