Hvordan aktivere OpenCart SSL

Problemet er hvordan du gjør to ting: tving SSL på alle forespørsler, og omdiriger domenet til public_html / somfolder - der innholdet på nettstedet / domenet bor. Anbefalingen fra vertsstedet (BlueHost, selv om jeg har sett dette andre steder, er å gjøre denne andre tingen via htaccess i mappen public_html:

RewriteEngine on RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] #this next section is what the hosting place says to use # .htaccess main domain to subdirectory redirect # Do not change this line. RewriteEngine on # Change example.com to be your main domain. RewriteCond %{HTTP_HOST} ^(www.)?example.com$ # Change 'subdirectory' to be the directory you will use for your main domain. RewriteCond %{REQUEST_URI} !^/somefolder.c/ # Don't change the following two lines. RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Change 'subdirectory' to be the directory you will use for your main domain. RewriteRule ^(.*)$ /somefolder.c/$1 # Change example.com to be your main domain again. # Change 'subdirectory' to be the directory you will use for your main domain # followed by / then the main file for your site, index.php, index.html, etc. RewriteCond %{HTTP_HOST} ^(www.)?example.com$ RewriteRule ^(/)?$ somefolder.c/index.php [R,L] 

Merk at innholdet på nettstedet bor i somefolder.c-mappen.

Så htaccess bør ta seg av disse forespørslene

www.example.com example.com http://example.com https://example.com http://www.example.com https://www.example.com https://www.example.com/somepage.php #this page is in public_html/somefolder.c http://example.com/folderb/somepage.php #this page is in public_html/somefolder.c/folderb 

... og variasjoner deri.

Jeg er ikke sikker på at htaccessen ovenfor vil fungere i alle disse situasjonene. Så:

  1. Er det en bedre måte?

  2. Er det et krav om en egen htaccess i somefolder.c mappe (innholdet 'root')? I så fall hva skal den inneholde?

Jeg foretrekker ikke å omorganisere hele stedet (flytte nettstedsfilene fra public_html/somefolder.c til public_html mappe.

La til

Det er flere domener knyttet til denne hostingkontoen. Det primære domenet er www.example.com .

Jeg bemerker at den 'første kraften SSL-delen' fungerer. Og intensjonen med den andre delen er å ha https://www.example.com peke på somefolder.c fornøyd med https://www.example.com/folderb/somepage.php peke på public_html/somefolder.c/folderb/somepage.php fil.

At https://www.example.com/folderb/somepage.php forespørsel vil (noen ganger; ikke konsekvent) vises https://www.example.com/somefolder.c/folderb/somepage.php på adresselinjen. Jeg vil ha https://www.example.com/folderb/somepage.php for å vise på adresselinjen. Så 'somefolder.c'skal aldri vises på adresselinjen.

  1. hvordan best gjør du dette med htaccess-filer i public_html-mappen
  2. er det behov for ekstra htaccess-filer i undermapper?

  • 1 Fungerer kraften til SSL?
  • 1 Hva fungerer egentlig ikke - hva skjer for øyeblikket? Bare for å avklare, /somefolder.c skal være helt skjult for brukeren? Så for sluttbrukeren ser det bare ut som om alle filene blir servert fra dokumentroten? Det er bare det at du har en blanding av interne omskrivninger og eksterne omdirigeringer til denne underkatalogen - som jeg mistenker er feil. Er du vert for mer enn ett domene på denne kontoen? Antagelig har du ingen andre ennå .htaccess filer? Trenger du å kunne servere filer fra dokumentroten?
  • Rediger spørsmålet for å avklare slik kommentarene ber om.
  • Spørsmålet redigert per forespørsel.
  • Jeg fjernet "omdirigering" fra tittelen. Fra forklaringen din vil du ikke ha viderekoblinger. Viderekoblinger endrer URL-en og gjør den endringen synlig for brukerne. Du vil ha en "omskriving" som internt endrer hvordan serveren oppfyller forespørselen.

Det er flere domener knyttet til denne hostingkontoen. Det primære domenet er www.example.com

Det er litt uklart (fra koden din) hva du vil gjøre med disse andre domenene? Ønsker du å kanonisere alle disse domenene til ditt "primære domene", eller vil du holde disse atskilte (for å opprettholde forskjellig innhold på de forskjellige domenene)? HTTP til HTTPS-viderekobling (som du sier "fungerer") omdirigerer alt til www.example.com - så dette kanoniserer alle domener til primærdomenet. Imidlertid sjekker alle reglene som følger eksplisitt for dette domenet i forespørselen, som om det forventes flere domener - dette ser ut til å være unødvendig?

Så jeg antar at disse domenene skal bli kanoniserte. Jeg antar også at ikke-www / www også skal kanoniseres (som du ikke gjør for øyeblikket).

RewriteRule ^(/)?$ somefolder.c/index.php [R,L] 

Den siste regelen din utsteder også en ekstern omdirigering til somefolder.c/index.php - dette vil gå i stykker (med mindre du har definert en RewriteBase et annet sted?). Men dette burde uten tvil være et intern omskriving, ikke en ekstern omdirigering. Imidlertid er det tvilsomt om det i det hele tatt er nødvendig.

Prøv noe som følger i stedet (basert på gjeldende regelsett):

RewriteEngine on # non-www to www redirect (HTTP and HTTPS) # - Also canonicalises all other domains RewriteCond %{HTTP_HOST} !^www\.example\.com RewriteRule (.*) https://www.example.com/$1 [R,L] # HTTP to HTTPS redirect # HTTP_HOST is guaranteed to be the primary domain by this stage RewriteCond %{SERVER_PORT} 80 RewriteRule (.*) https://%{HTTP_HOST}/$1 [R,L] # Rewrite all requests (for non-existent files) to `/somefolder.c` RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule !^somefolder\.c /somefolder.c%{REQUEST_URI} [L] 

Det kan hende at sjekken for ikke-eksisterende filer og kataloger ikke er nødvendig - faktisk er det kanskje ikke ønskelig i det hele tatt. Dette gjør at eksisterende filer (og kataloger) kan serveres utenfor /somefolder.c katalog. Imidlertid forhindrer det også at nettstedet i underkatalogen serverer sin egen tilpassede 404 ErrorDocument.

Endre ovennevnte midlertidige (302) viderekoblinger til 301 kun når du er sikker på at det fungerer OK. dvs. endring R til R=301.

Forsikre deg om at nettleserbufferen din er klar før du tester.

fungert for deg: Charles Robertson | Ønsker du å kontakte oss?