2010-11-16 18 views
10

Po pierwsze, chciałbym usunąć www. z mojej nazwy domenyUsunąć stronę www, wymusić https na niektórych katalogach i http na reszcie?

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

Chciałbym również na niektóre katalogi być bezpieczne (https), podczas gdy reszta pozostaje http

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

Oczywiście potrzebuje pracować dla wszystkich warunków, na przykład, gdy ktoś wpisze:

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

Również, gdy ludzie nawigują z dala od strony logowania, wracają do http. Obecnie w .htaccess jest po którym odbywa się automatycznie przez oprogramowanie używam i przypuszczam musi być tam dla go do pracy:

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

pomysłów, w jaki sposób można to osiągnąć kontrola sen wszystko rzeczy?

Z góry dziękuję!

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

@Gumbo Po poradę to moja pełna .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 

Nawigacja do http://example/login nadal idzie do http://example/index.php, kiedy powinien przejść do https://example/login Czy mam błędne zamówienie?

+0

Um, '^ (login | foo | bar | ...) $' był tylko przykład, który pasuje 'login',', 'bar foo' ', itd. – Gumbo

+0

Tak, widzę, próbowałem go z^(login) $ ale nadal wykazuje to samo zachowanie – Anthony

Odpowiedz

21

Spróbuj tych zasad:

# 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] 

też chcieć dodać kilka dodatkowych warunków aby zmienić tylko protokół dla żądań GET i HEAD, ale nie dla żądań POST.

+0

Guten Tag Gumbo! OK, myślę, że gdzieś zmierzamy. Z tymi regułami jak wyżej, w tym z oryginalnie zawartym w .htaccess, usuwając www. działa we wszystkich przypadkach. Jednak przejście do http: // mydomain.com/login prowadzi do http: // mydomain/index.php – Anthony

+0

@Anthony: Zgodnie z ogólną zasadą, umieść te reguły, które powodują zewnętrzne przekierowanie przed tymi regułami, które powodują tylko Przepis wewnętrzny. W przeciwnym razie możesz uzyskać zewnętrzne przekierowania, które zostały już przepisane wewnętrznie. – Gumbo

+0

Edytowałem mój pierwotny wpis, aby lepiej zrozumieć, z czym pracuję. – Anthony

0

usuń www (testowane):

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

przekierowanie (nie testowane):

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

Po przeczytaniu całej linii czasu postów otrzymałem komunikat o błędzie: Moja witryna (c4dprime.com) została dołączona https: w przeglądarce Firefox mozilla. Google i Internet Explore pokazują adres domeny jako http: (Prawdziwy problem w firefox) Nie chciałem https: dla mojej domeny w dowolnej przeglądarce, ponieważ jedno nieznane przekierowanie jest związane z moją domeną przez https: (Przyczyna tego błędu) po instalacji następujących wtyczki w wordpress, (Łatwe przekierowanie dla ssl) .... Powiedziałem każdemu, żeby nie używał żadnych wtyczek niskiego poziomu dla wordpressa.

W każdym razie! Po przeczytaniu wielu artykułów i samouczków na ten temat za pomocą wyszukiwarki Google. Teraz cieszę się, że mogę rozwiązać ten problem z tego postu. Pamiętaj o jednej rzeczy o mnie jestem nowy w tej formie i wordpress.

Ta wskazówka jest pełna pomoc dla mnie

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

Po edycji lub pewnych zmian w moim pliku .htaccess Następujący kod mam teraz korzystanie z rozwiązania tego błędu.

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

W przypadku każdego zgłoszenia/problemu/sugestii możesz skontaktować się ze mną pod adresem [email protected] –

1

Ten kod działa dla mnie:

<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>