Как да активирам OpenCart SSL

Въпросът е как да направите две неща: да принудите SSL за всички заявки и да пренасочите домейна към public_html / somefolder - където живее съдържанието на сайта / домейна. Препоръката от хостващото място (BlueHost, въпреки че съм виждал това и другаде, е да направите това второ нещо чрез htaccess в папката 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] 

Имайте предвид, че съдържанието на сайта живее в папката somefolder.c.

Така че htaccess трябва да се погрижи за тези заявки

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 

... и вариации в тях.

Не съм сигурен, че htaccess по-горе ще работи във всички тези ситуации. Така:

  1. Има ли по-добър начин?

  2. Има ли изискване за отделен htaccess в somefolder.c папка (съдържанието 'root')? Ако да, какво трябва да съдържа?

Предпочитам да не пренареждам цялото място (преместване на файлове от сайта от public_html/somefolder.c към public_html папка.

Добавено

Има няколко домейна, свързани с този хостинг акаунт. Основният домейн е www.example.com .

Отбелязвам, че „първата сила SSL част“ работи. И намерението на втората част е да има https://www.example.com посочете somefolder.c съдържание с https://www.example.com/folderb/somepage.php посочете public_html/somefolder.c/folderb/somepage.php файл.

Че https://www.example.com/folderb/somepage.php заявката (понякога; не последователно) ще се покаже https://www.example.com/somefolder.c/folderb/somepage.php на адресната лента. Искам https://www.example.com/folderb/somepage.php да се показва в адресната лента. Така че 'somefolder.c'никога не трябва да се появява в адресната лента.

  1. как най-добре да направите това с htaccess файлове в папката public_html
  2. необходими ли са допълнителни htaccess файлове в подпапки?

  • 1 Работи ли силата към SSL?
  • 1 Какво всъщност не „работи“ - какво се случва в момента? Само да поясня, /somefolder.c трябва да бъде изцяло скрит от потребителя? И така, за крайния потребител изглежда просто, че всички файлове се обслужват от корена на документа? Просто имате комбинация от вътрешни пренаписвания и външни пренасочвания към този поддиректория - което предполагам, че е неправилно. Хоствате ли повече от един домейн в този акаунт? Вероятно все още нямате други .htaccess файлове? Трябва ли да можете да обслужвате файлове от корен на документа?
  • Моля, редактирайте въпроса, за да го изясните, както се изисква от коментарите.
  • Въпросът се редактира по заявка.
  • Премахнах „пренасочване“ от заглавието. От вашето обяснение не искате пренасочвания. Пренасочванията променят URL адреса и правят тази промяна видима за потребителите. Искате "пренаписване", което вътрешно променя начина, по който сървърът изпълнява заявката.

Има няколко домейна, свързани с този хостинг акаунт. Основният домейн е www.example.com

Малко е неясно (от вашия код) какво искате да правите с тези други домейни? Искате ли да канонизирате всички тези домейни във вашия „основен домейн“ или искате да ги запазите отделни (за да поддържате различно съдържание в различните домейни)? Вашето HTTP към HTTPS пренасочване (за което казвате, че „работи“) пренасочва всичко към www.example.com - така че това канонизира всички домейни към основния домейн. Всички правила, които следват изрично обаче, проверяват този домейн в заявката, сякаш се очакват множество домейни - това изглежда ненужно?

Така че, предполагам, че тези домейни трябва да бъдат канонизирани. Предполагам също, че не-www / www също трябва да бъде канонизиран (което в момента не правите).

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

Също така, последното ви правило издава външно пренасочване да се somefolder.c/index.php - това ще се счупи (освен ако не сте дефинирали a RewriteBase някъде другаде?). Но това несъмнено трябва да бъде вътрешно пренаписване, не е външно пренасочване. Съмнително е обаче дали това изобщо се изисква.

Вместо това опитайте нещо подобно (въз основа на текущия ви набор от правила):

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] 

Може да не се изисква проверка за несъществуващи файлове и директории - всъщност това може изобщо да не е желателно. Това позволява съществуващите файлове (и директории) да се обслужват извън /somefolder.c директория. Това обаче също така предотвратява сайта, съдържащ се в поддиректорията, да обслужва свой собствен персонализиран 404 ErrorDocument.

Променете горните временни (302) пренасочвания на 301 само когато сте сигурни, че работи добре. т.е. промяна R да се R=301.

Уверете се, че кешът на браузъра ви е чист преди тестване.

е работил за вас: Charles Robertson | Искате ли да се свържете с нас?

Полезна информация