2010-11-16 6 views
10

Innanzitutto, vorrei rimuovere www. dal mio nome di dominioRimuovere www site-wide, forzare https su determinate directory e http sul resto?

http://www.example.com =>http://example.com

mi piace anche per alcune directory per essere sicuro (https), mentre il resto rimane http

http://example.com/login =>https://example.com/login

Ovviamente ha bisogno lavorare per tutte le condizioni, ad esempio se qualcuno digita:

http://www.example.com/login =>https://example.com/login

Inoltre, quando le persone si allontanano dalla pagina di accesso, ritorna a http. Attualmente in .htaccess è il seguente, che viene fatto automaticamente dal software che sto usando e suppongo che ha bisogno di essere lì per farlo funzionare:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* ./index.php 

Tutte le idee su come posso ottenere controllo del sogno tutti questi cose?

Grazie in anticipo!

===================

@Gumbo seguito il tuo consiglio questo è il mio completo .htaccess

RewriteEngine On 


# remove www from host 
RewriteCond %{HTTP_HOST} ^www\.(.+) 
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+) 
RewriteRule^http%2://%3%{REQUEST_URI} [L,R=301] 

# force HTTPS 
RewriteCond %{HTTPS} =off 
RewriteRule ^(login)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

# force HTTP 
RewriteCond %{HTTPS} =on 
RewriteRule !^(login)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 


RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* ./index.php 


Options -Indexes 

Navigazione verso http://example/login va ancora a http://example/index.php quando dovrebbe andare a https://example/login Ho sbagliato l'ordine?

+0

Um, '^ (login | foo | bar | ...) $' era solo un esempio che corrisponde 'login',' foo', 'bar ', ecc. – Gumbo

+0

Sì, vedo, l'ho provato con solo^(accesso) $ ma mostra ancora lo stesso comportamento – Anthony

risposta

21

Prova queste regole:

# remove www from host 
RewriteCond %{HTTP_HOST} ^www\.(.+) 
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+) 
RewriteRule^http%2://%3%{REQUEST_URI} [L,R=301] 

# force HTTPS 
RewriteCond %{HTTPS} =off 
RewriteRule ^(login|foo|bar|…)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

# force HTTP 
RewriteCond %{HTTPS} =on 
RewriteRule !^(login|foo|bar|…)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

È inoltre possibile aggiungere alcune ulteriori condizioni modificare solo il protocollo su richieste GET e HEAD ma non su richieste POST.

+0

Guten Tag Gumbo! OK penso che stiamo arrivando da qualche parte. Con queste regole come sopra, compresa quella originariamente in .htaccess, rimuovendo www. funziona in tutti i casi. Tuttavia, navigando su http: // mydomain.com/login si passa a http: // mydomain/index.php – Anthony

+0

@Anthony: come regola generale, metti quelle regole che causano un reindirizzamento esterno di fronte a quelle regole che causano solo un riscrittura interna. Altrimenti puoi ricevere richieste esternamente reindirizzate che sono state già riscritte internamente. – Gumbo

+0

Ho modificato il mio post originale per darvi una migliore idea di cosa sto lavorando. – Anthony

0

rimuovere www (testato):

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} ^www\.yoursite\.com$ [NC] 
RewriteRule ^(.*)$ http://yoursite.com/$1 [L,R=301] 

redirect (non testato):

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{THE_REQUEST} \/login/?.*\ HTTP [NC] 
RewriteRule ^(.*)$ https://yoursite.com/login [L,R=301] 
0

Dopo aver letto questo post, ho avuto successo per il seguente errore: Il mio sito web (c4dprime.com) è stato allegato https: in mozilla firefox browser. Google e Internet explorer sono show domain address come http: (Il vero problema in firefox) Non volevo https: per il mio dominio in qualsiasi browser perché un reindirizzamento di conoscenza collegato al mio dominio da https: (Causa per questo errore) dopo l'installazione seguente plugin in wordpress, (reindirizzamento facile per ssl) .... Ho detto a tutti di non usare plugin di basso livello per wordpress.

In ogni caso! Dopo aver letto molti articoli e tutorial su questo argomento tramite il motore di ricerca di Google. Ora sono felice di dire che ho risolto questo problema da questo post. Ricorda una cosa su di me sono nuovo in questa forma e wordpress.

Questo suggerimento è aiutare pieno per me

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} ^www\.yoursite\.com$ [NC] 
RewriteRule ^(.*)$ http://yoursite.com/$1 [L,R=301] 

Dopo modificare o alcuni cambiamenti nel mio file .htaccess seguenti codice che ho ora con l'uso risolto questo errore.

AddHandler c4d-prime .com 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTPS} on 
RewriteBase/
RewriteRule ^$ http://www.c4dprime.com/ [R=301,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 
+0

Per qualsiasi segnalazione/problema/suggerimento è possibile contattarmi all'indirizzo [email protected] –

1

Questo codice funziona per me:

<IfModule mod_rewrite.c> 

    RewriteEngine on 

    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L] 

    RewriteCond %{HTTPS} !=on 
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 

</IfModule> 
Problemi correlati