2016-03-14 29 views
8

index.php nie usuwa podczas korzystania z https, ale działa dla http. Co muszę zrobić, to moja strona działa poprawnie, tak jak działa na http i https zarówno. Każdy, kto stanął w obliczu tego samego problemu, pomógł mi to naprawić.index.php nie usuwa https CodeIgniter

Ex: http

  1. http://xyz.mydomain.com/users/login // działa dobrze
  2. http://xyz.mydomain.com/index.php/users/login // działa dobrze

HTTPS

1) https://xyz.mydomain.com/users/login// 404 Strona nie znaleziona
2) https://xyz.mydomain.com/index.php/users/login // działa dobrze

mój kod .htaccess

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 

config.php Moja baza url jest ustawiona jako

$root=(isset($_SERVER['HTTPS']) ? "https://" : "http://").$_SERVER['HTTP_HOST']; 
$root.= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']); 
$config['base_url'] = $root; 
+0

dlaczego nie zrobić '$ config [ 'index_page'] = '';' usunąć indeks .php włączenia w pierwszej kolejności? –

+0

Pierwszą rzeczą, którą zrobię, to sprawdzenie, co '$ config ['base_url']' jest ustawione po wykonaniu tego wszystkiego. coś w stylu 'print_r ($ config ['base_url']); exit; ' –

+0

$ config ['index_page'] = ''; jest taki sam jak napisałeś –

Odpowiedz

1

Wydaje się, że istnieje problem w twoim pliku hosta. Jeśli używasz Apache, zmień swój plik hosta taki jak;

<VirtualHost *:443> 
    ServerAdmin [email protected] 
    DocumentRoot /path 
    ServerName xyz.mydomain.com 
    ServerAlias www.xyz.mydomain.com 

    SSLEngine On 
    SSLOptions +StrictRequire 
    SSLCertificateFile /path to ssl file/mydomain.crt 
    SSLCertificateKeyFile /path to ssl file/mydomain.key 
    SSLProtocol TLSv1 
    <Directory "/path"> 
     Require all granted 
     Options -FollowSymLinks -Includes -ExecCGI -Indexes 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
    </Directory> 
    RewriteEngine On 
</VirtualHost> 

Teraz chnage plik .htaccess jak:

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine On 
    RewriteCond %{SERVER_PORT} 80 
    RewriteRule ^(.*)$ https://xyz.mydomain.com/$1 [R=301,L] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule> 

Szczęśliwy Coding :)

+0

Dzięki @sujeet Kumar w mojej konfiguracji vhosta brakowało ** Wymagaj wszystkich udzielonych Opcje -FollowSymLinks -Zawiera -ExecCGI -Indexes AllowOverride Wszystko Pozwolić na pozwolenie, odmówić Zezwalaj od wszystkich RewriteEngine On ** jego działa fajnie. –