Godaddy: How to Find .htaccess File (Easiest Way)
Vypadá to, že .htaccess nepřesměrovává moje stránky z http na https. Moje doména je přesměrována na https, ale ne na mé stránky ... Může to být špatná konfigurace z mého hostitele webu?
Tady je to, co jsem dosud dělal:
- Vyberte certifikát SSL a nainstalujte ho na můj web z hostitele.
- Vynutit wp-config k přechodu z HTTP na HTTP pomocí: define ('FORCE_SSL_ADMIN', true);
- Transformovat všechny mé adresy URL na HTTP pomocí Replace and Search DB
- Přidat tuto doménu do Google Search Console…
Vložte tento kód do mého .htaccess:
RewriteEngine On # Redirect to HTTPS RewriteCond %{HTTP_HOST} ^http://example\.com [NC] RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTPS} =off [OR] RewriteRule ^(.*)$ https://example.com/$1 [L,R=301] # Redirect from www HTTPS to HTTPS RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] RewriteRule ^(.*)$ https://example.com/$1 [L,R=301] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
Myslím, že je to všechno ... Máte představu o tom, co může způsobit tento problém?
RewriteCond %{HTTP_HOST} ^http://example\.com [NC]
The HTTP_HOST
proměnná obsahuje pouze název hostitele, ne systém + název hostitele, takže se to nikdy neshoduje. Pokud se to nikdy neshoduje, nebude nikdy přesměrováno http://example.com/...
na HTTPS. (Toto jste však správně použili ve svém druhý pravidlo blok, které vůle přesměrovat http://www.example.com/...
na HTTPS.)
Předpokládám, že máte pouze jednu doménu? V takovém případě by měla být tato směrnice jednoduše odstraněna (neopravena).
RewriteCond %{HTTPS} =off [OR]
Máte však také chybu OR
vlajka na poslední RewriteCond
směrnice. Pokud by se předchozí podmínky shodovaly, mělo by to za následek smyčku přesměrování, protože je to v podstatě
, který je vždy skutečný.
souhrn
# Redirect to HTTPS RewriteCond %{HTTP_HOST} ^http://example\.com [NC] RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTPS} =off [OR] RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
Stručně řečeno, měli byste nahradit první blok pravidel (výše) tímto:
# Redirect to HTTPS RewriteCond %{HTTPS} =off RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
Nemá smysl kontrolovat obojí SERVER_PORT
a HTTPS
. Buď by mělo stačit; ne obojí.
- 1 Moc děkuji, funguje to! Máte úplnou pravdu, jsem nový .htaccess a neviděl jsem tyto chyby, ani po několika hodinách ... Děkuji také za vaše vysvětlení. Nyní je to mnohem jasnější. :)