HowTo:SSL-Proxy: Unterschied zwischen den Versionen
(Info: SEO-GAU) |
Yogi (Diskussion | Beiträge) (zweiter Versuch) |
||
Zeile 1: | Zeile 1: | ||
− | < | + | = Problem = |
+ | Du möchtest deinen Webshop über https für die Kunden erreichbar machen und dein Provider bietet dir einen so genannten SSL-Proxy an. Das sieht dann in der Regel so aus. Dein Shop läuft z.B. unter <nowiki>www.deinShop.tld</nowiki>. Dein Provider nennt dir dafür die folgende SSL-Proxy url: <nowiki>http://www.ssl-proxy.tld/www.deinShop.tld</nowiki> | ||
+ | Zunächst könnte man meinen - na da schreibe ich doch die Config so um das alles über den proxy geroutet wird - aber das ist ein '''SEO-GAU''', da über diesen ja auch andere Shops gehen und alle dann unter der geleichen Domain die Produkte anzeigen - daran sollest Du also nichtmal im Schlaf denken. Auch von einer Änderung in der .htaccess kann man nur abraten. | ||
+ | = Zweiter Versuch = | ||
+ | <font style="font-size: xx-large;">Status der Information: im Test</font> | ||
+ | |||
+ | Hier nun der zweite Versuch die URLS bei den SSL-Proxy usern hinzubekomen... | ||
+ | |||
+ | Passe folgende Daten in der /includes/configure.php Datei an, hierbei werden alle SERVER als https angegeben: | ||
+ | define('HTTP_SERVER', '<nowiki>http://www.deinShop.tld</nowiki>'); # Der "normale" Zugriff auf den Shop | ||
+ | define('HTTPS_SERVER', '<nowiki>https://ssl-proxy.tld/www.deinShop.tld</nowiki>'); # was da genau rein muß sagt dir dein Provider | ||
+ | define('ENABLE_SSL', true); # hier als boolscher Wert ohne Anführungszeichen!!! | ||
+ | |||
+ | Anpassungen in der /admin/includes/configure.php: | ||
+ | define('HTTP_SERVER', '<nowiki>http://www.deinShop.de</nowiki>') # Zugriff auf das Admin-Backend ohne HTTPS!!! | ||
+ | define('HTTP_CATALOG_SERVER', '<nowiki>http://www.deinShop.de</nowiki>'); # normaler zugriff auf den Shop!!! | ||
+ | define('HTTPS_CATALOG_SERVER', '<nowiki>https://ssl-proxy.tld/www.deinShop.de</nowiki>'); # das was der Provider genannt hat | ||
+ | |||
+ | Folgende Änderungen im Core musst Du vornehmen wenn Du eine Version <= 1.0.3a einsetzt: | ||
+ | Die Änderungen die Du bereits beim ersten Versuch gemacht hast bleiben drin, zusätzlich nun folgendes ändern! | ||
+ | ;includes/application_top.php | ||
+ | :Lösche den Block | ||
+ | ::<code>// set the type of request (secure or not)</code> | ||
+ | ::<code>$request_type = (getenv('HTTPS') == '1' || getenv('HTTPS') == 'on') ? 'SSL' : 'NONSSL';</code> | ||
+ | :und füge unterhalb von | ||
+ | ::<code>// set the top level domains</code> | ||
+ | ::<code>$http_domain = xtc_get_top_level_domain(HTTP_SERVER);</code> | ||
+ | ::<code>$https_domain = xtc_get_top_level_domain(HTTPS_SERVER);</code> | ||
+ | :diese Zeilen ein | ||
+ | ::<code>// set the type of request (secure or not), include ssl-proxy check</code> | ||
+ | ::<code>if ($http_domain != $https_domain) {</code> | ||
+ | :::<code>$request_type = ($https_domain = (isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : $_SERVER['HTTP_HOST']) ? 'SSL' : 'NONSSL');</code> | ||
+ | ::<code>} else {</code> | ||
+ | :::<code>$request_type = (getenv('HTTPS') == '1' || getenv('HTTPS') == 'on') ? 'SSL' : 'NONSSL';</code> | ||
+ | ::<code>}</code> | ||
+ | |||
+ | |||
+ | = Erster Versuch - '''gescheitert da SEO-GAU''' = | ||
---- | ---- | ||
Zeile 8: | Zeile 45: | ||
---- | ---- | ||
− | + | <del>Damit dies problemlos funktioniert müssen '''alle''' Seiten via SSL-Proxy abgerufen werden, selbst die Bilder-Links. | |
Recht einfach sollte das realisierbar sein durch einen entsprechenden redirekt in der /.htaccess vom Shop, hierfür sind folgende Zeilen in die Datei einzufügen: | Recht einfach sollte das realisierbar sein durch einen entsprechenden redirekt in der /.htaccess vom Shop, hierfür sind folgende Zeilen in die Datei einzufügen: | ||
Zeile 46: | Zeile 83: | ||
:mache daraus | :mache daraus | ||
::<code>$module_smarty -> assign('products_sort_file', (strpos($_SERVER['REQUEST_URI'], DIR_WS_CATALOG) === false ? DIR_WS_CATALOG : NULL).$_SERVER['REQUEST_URI']);</code> | ::<code>$module_smarty -> assign('products_sort_file', (strpos($_SERVER['REQUEST_URI'], DIR_WS_CATALOG) === false ? DIR_WS_CATALOG : NULL).$_SERVER['REQUEST_URI']);</code> | ||
+ | </del> |
Version vom 29. Juli 2009, 14:11 Uhr
Problem
Du möchtest deinen Webshop über https für die Kunden erreichbar machen und dein Provider bietet dir einen so genannten SSL-Proxy an. Das sieht dann in der Regel so aus. Dein Shop läuft z.B. unter www.deinShop.tld. Dein Provider nennt dir dafür die folgende SSL-Proxy url: http://www.ssl-proxy.tld/www.deinShop.tld
Zunächst könnte man meinen - na da schreibe ich doch die Config so um das alles über den proxy geroutet wird - aber das ist ein SEO-GAU, da über diesen ja auch andere Shops gehen und alle dann unter der geleichen Domain die Produkte anzeigen - daran sollest Du also nichtmal im Schlaf denken. Auch von einer Änderung in der .htaccess kann man nur abraten.
Zweiter Versuch
Status der Information: im Test
Hier nun der zweite Versuch die URLS bei den SSL-Proxy usern hinzubekomen...
Passe folgende Daten in der /includes/configure.php Datei an, hierbei werden alle SERVER als https angegeben:
define('HTTP_SERVER', 'http://www.deinShop.tld'); # Der "normale" Zugriff auf den Shop define('HTTPS_SERVER', 'https://ssl-proxy.tld/www.deinShop.tld'); # was da genau rein muß sagt dir dein Provider define('ENABLE_SSL', true); # hier als boolscher Wert ohne Anführungszeichen!!!
Anpassungen in der /admin/includes/configure.php:
define('HTTP_SERVER', 'http://www.deinShop.de') # Zugriff auf das Admin-Backend ohne HTTPS!!! define('HTTP_CATALOG_SERVER', 'http://www.deinShop.de'); # normaler zugriff auf den Shop!!! define('HTTPS_CATALOG_SERVER', 'https://ssl-proxy.tld/www.deinShop.de'); # das was der Provider genannt hat
Folgende Änderungen im Core musst Du vornehmen wenn Du eine Version <= 1.0.3a einsetzt: Die Änderungen die Du bereits beim ersten Versuch gemacht hast bleiben drin, zusätzlich nun folgendes ändern!
- includes/application_top.php
- Lösche den Block
// set the type of request (secure or not)
$request_type = (getenv('HTTPS') == '1' || getenv('HTTPS') == 'on') ? 'SSL' : 'NONSSL';
- und füge unterhalb von
// set the top level domains
$http_domain = xtc_get_top_level_domain(HTTP_SERVER);
$https_domain = xtc_get_top_level_domain(HTTPS_SERVER);
- diese Zeilen ein
// set the type of request (secure or not), include ssl-proxy check
if ($http_domain != $https_domain) {
$request_type = ($https_domain = (isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : $_SERVER['HTTP_HOST']) ? 'SSL' : 'NONSSL');
} else {
$request_type = (getenv('HTTPS') == '1' || getenv('HTTPS') == 'on') ? 'SSL' : 'NONSSL';
}
Erster Versuch - gescheitert da SEO-GAU
UPDATE: Wenn der gesamte Shop (bis auf die Startseite) unter der Domain des Providers läuft, ist das ein "SEO-GAU" für den Shop. Bis zu einer tragfähigen Lösung sollte die 1.0.3(a) nicht für einen Shop mit SSL-Proxy eingesetz werden.
Damit dies problemlos funktioniert müssen alle Seiten via SSL-Proxy abgerufen werden, selbst die Bilder-Links.
Recht einfach sollte das realisierbar sein durch einen entsprechenden redirekt in der /.htaccess vom Shop, hierfür sind folgende Zeilen in die Datei einzufügen:
# Diese Variante ist ungeeignet, da hierdurch die Client-Brower für jedes Objekt zwei anfragen stellen müssen. # Der Redirect würde jede anfrage somit unnötig verlangsamen...
Dein Provider nennt Dir für deinen Shop www.deinShop.tld die SSL-Proxy Adresse https://ssl-proxy.tld/www.deinShop.tld Diese URL besteht aus zwei bestandteilen (SERVER: ssl-proxy.tld und dem PFAD: www.deinShop.tld)
Passe folgende Daten in der /includes/configure.php Datei an, hierbei werden alle SERVER als https angegeben:
define('HTTP_SERVER', 'https://ssl-proxy.tld'); # auch hier: https!!! define('HTTPS_SERVER', 'https://ssl-proxy.tld'); # was da genau rein muß sagt dir dein Provider define('ENABLE_SSL', true); # hier als boolscher Wert ohne Anführungszeichen!!! define('ENABLE_SSL_CATALOG', 'true'); # hier mit Anführungszeichen - das muß so sein!</nowiki> define('DIR_WS_CATALOG', '/www.deinShop.de/'); // absolute path required
Wenn Dein Shop im Hauptverzeichnis läuft so wars das, ansonsten mußt Du die Definition von DIR_WS_CATALOG entsprechend erweitern, z.B.:
define('DIR_WS_CATALOG', '/www.deinShop.de/ecb/'); // absolute path required
Anpassungen in der /admin/includes/configure.php:
define('HTTP_SERVER', 'https://ssl-proxy.tld') # HTTPS!!! was da genau rein muß sagt dir dein Provider define('HTTP_CATALOG_SERVER', 'https://ssl-proxy.tld'); # HTTPS!!! define('HTTPS_CATALOG_SERVER', 'https://ssl-proxy.tld'); # HTTPS!!! define('ENABLE_SSL_CATALOG', 'true'); # hier mit Anführungszeichen - das muß so sein! define('DIR_WS_ADMIN', '/www.deinShop.de/admin/'); // absolute path required define('DIR_WS_CATALOG', '/www.deinShop.de/'); // absolute path required
DIR_WS_ADMIN und DIR_WS_CATALOG muß bei Shops in Unterverzeichnissen natürlich wieder entsprechend angepasst werden!
Änderungen im Core wenn Du eine Version <= V1.0.3a benutzt:
- includes/application_top.inc
- suche
$breadcrumb->add(HEADER_TITLE_TOP, HTTP_SERVER.$breadcrumbSID);
- mache daraus
$breadcrumb->add(HEADER_TITLE_TOP, HTTP_SERVER.DIR_WS_CATALOG.$breadcrumbSID);
- includes/modules/product_listing.php
- suche
$module_smarty -> assign('products_sort_file', $_SERVER['REQUEST_URI']);
- mache daraus
$module_smarty -> assign('products_sort_file', (strpos($_SERVER['REQUEST_URI'], DIR_WS_CATALOG) === false ? DIR_WS_CATALOG : NULL).$_SERVER['REQUEST_URI']);