Zmagam się od wczoraj z następującym problemem. Korzystam z DirectAdmin'a na jednym z VPS, na innych jest czysty Debian, zdecydowanie bardziej preferuję nginx'a.
Certyfikaty wildcard SSL zakupione, DA prawidłowo je rozpoznał i pokazał datę ważności. Po włączeniu obsługi SSL dla jednej z domen, na którym stoi sklep internetowy mam błąd ERR_TOO_MANY_REDIRECTS.
Umieściłem w pliku .htaccess zalecane przez help DA przekierowania:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Konfigurację vhostów wrzuciłem tutaj: https://pastebin.com/Jv9EZa3X
Sklep został zainstalowany w katalogu /public_html/application/public i tam też jest plik .htaccess, który wygląda następująco:
#AddHandler x-httpd-php53 .php RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # use if needed: #RewriteBase / RewriteRule ^$ / [QSA] RewriteCond %{REQUEST_FILENAME} ([a-z_]+?)_picture/(.*?)\.(?:jpg|png)$ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ([a-z_]+?)_picture/(.*?)/(.*?)\.(jpg|png)$ thumbnailer/create/$1/$2/$3/$4 [QSA,L] # some hosts need redirect: # RewriteRule ([a-z_]+?)_picture/(.*?)/(.*?)\.(jpg|png)$ thumbnailer/create/$1/$2/$3/$4 [QSA,R,L] # redirects request to nonexisting CSS and JS to empty CSS/JS files [so you dont need to define module CSS/JS if you dont need it] RewriteCond %{REQUEST_FILENAME} ^(.*?)\.css$ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ stylesheets/core/no_css.css [QSA,L] RewriteCond %{REQUEST_FILENAME} ^(.*?)\.js$ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ javascript/core/no_js.js [QSA,L] # displays 404.html if IMAGE is not found RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} images/.*?(png|jpg|gif) # ^^ may catch valid requests that contain "images/" and have image extension!!!! RewriteRule ^(.*)$ 404.html [QSA,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,L] # also OK RewriteRule ^(.*)$ index.php/%{REQUEST_FILENAME} [QSA,L] # define error pages ErrorDocument 404 error_page.php ErrorDocument 406 error_page.php ErrorDocument 500 error_page.php
Dzisiaj spróbowałem jeszcze jednej rzeczy. Przeniosłem wszystkie pliki sklepu wraz z katalogami z public_html do private_html. Zmieniłem w DA
|*if !SUB| |?DOCROOT=/home/admin/domains/my-shop.net/public_html/application/public| |*endif|
na
|*if !SUB| |?DOCROOT=/home/admin/domains/my-shop.net/private_html/application/public| |*endif|
W lokalizacji /public_html/application/public stworzyłem .htaccess z zawartością:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Po odświeżeniu domeny sklepu pojawiła się zielona kłódka, niestety są błędy:
Warning: require_once(/home/admin/domains/my-shop.net/public_html/application/public/../../framework/gp/event_dispatcher/EventDispatcherGP.php): failed to open stream: No such file or directory in /home/admin/domains/my-shop.net/private_html/framework/autoloader/Autoloader.php on line 66 Fatal error: require_once(): Failed opening required '/home/admin/domains/my-shop.net/public_html/application/public/../../framework/gp/event_dispatcher/EventDispatcherGP.php' (include_path='.:/usr/local/lib/php:/home/admin/domains/my-shop.net/private_html/application:/home/admin/domains/my-shop.net/private_html/framework:/home/admin/domains/my-shop.net/private_html/framework/libs/:/home/admin/domains/my-shop.net/private_html/application/libs/ThirdParty') in /home/admin/domains/my-shop.net/private_html/framework/autoloader/Autoloader.php on line 66
Zrobiłem też link symboliczny, ale nie pomogło:
ln -s /private_html/application/public -> /public_html/application/public
Sprawdziłem wszystkie pliki w katalogu config i nie mogę znaleźć dlaczego skrypt chce wczytywać z public_html. Macie jakieś pomysły a może źle kombinuję? Przypuszczam, że gdzieś trzeba odświeżyć wpisy, w bazie danych nic nie widzę. Sklep www jest na silniku i-sklep.pl (i-systems.pl). Gdyby to była Presta lub coraz bardziej popularny thirtybees to sprawa jest prosta.
Dodam jeszcze, że subdomena z zainstalowaną Livezillą do obsługi chatu działa po https prawidłowo.
PS. Znalazłem plik ssl_template.php, ale to chyba nie to...
<?php /** * 1. Enable SSL in 'enabled' * 2. Define which domains (not aliases) should use SSL in 'ssl_domains' * 3. Configure 'admin_sections_prefixes' if needed (this is to support '/admin/*' urls) * 4. Configure controllers to return public function getActionsForSSL() * 5. Refresh controller configuration cache in /admin/technical_panel * 5.1 Refresh this cache config after each change in controllers */ 'enabled' => true, // 'enabled' => false, 'secure.site.pl' ), // check plugins.php // and copy all prefixes configured in: $pluginManager->registerPlugin( Framework_Plugins_PluginManager::AFTER_ROUTING, new Application_AdminSectionPlugin(array('admin'))); 'admin', ) );