Kategorien
Allgemein

xt:Commerce – AcceptPath – die Letzte…

Die ab V3 in xt:Commerce integrierten Suchmaschinenfreundlichen URLs setzen einen Webserver mit installiertem AcceptPath voraus.

Viele Hoster u.a. 1und1 stellen AcceptPath nicht zur Verfügung (und ja(!) AcceptPath läuft auch mit 1.3x Apache – um der Hotline-Lüge gleich entgegenzuwirken es sei nur auf Apache 2 verfügbar).

Wer die von shopstat per mod_rewrite umgegenen URLs nicht einsetzen will findet hier eine Bauanleitung, wie xt:Commerce bzw. die äquivalente Contribution für OSCommerce auf AcceptPath freien Servern zum laufen bekommen ist.

http://www.xt-commerce.com/modules/ipboard/index.php?showtopic=14952

Coden werde ich die Änderung nicht, da meine Server nur AcceptPath bereitstellen. Wers unbedingt haben will kann es sich bei mir gegen Honorar coden lassen. Bei Interesse Mail an info # php-boutique.de

©copyrighted material – Alle Rechte an Text und Bild vorbehalten. Die Kopie, Reproduktion oder Modifikation ohne schriftliche Genehmigung von PHP-BOUTIQUE.de EDG. GmbH Dresden ist untersagt und wird juristisch verfolgt. No Trackbacks pls.

2 Antworten auf „xt:Commerce – AcceptPath – die Letzte…“

Für nicht – Sponsoren, hier eine Kopie des Threads:

das kann nicht funktionieren, solange du nicht die appli_top umbaust. die lässt sich auch ohne dr.web auf acceptpath-frei umbauen.

also erstmal alles zurückbauen, was du bisher geändert hast, die .htaccess lässt du stehen.

QUOTE

[REQUEST_URI] => /acceptpath.php/hallo
[SCRIPT_NAME] => /acceptpath.php
[PATH_INFO] => /hallo

die appli-top liest die geschichte hier aus…

CODE

// set the HTTP GET parameters manually if search_engine_friendly_urls is enabled
if (SEARCH_ENGINE_FRIENDLY_URLS == ‚true‘) {
if (strlen(getenv(‚PATH_INFO‘)) > 1) {
$GET_array = array();
$PHP_SELF = str_replace(getenv(‚PATH_INFO‘), “, $PHP_SELF);
$vars = explode(‚/‘, substr(getenv(‚PATH_INFO‘), 1));
for ($i=0, $n=sizeof($vars); $i<$n; $i++) {
if (strpos($vars[$i], ‚[]‘)) {
$GET_array[substr($vars[$i], 0, -2)][] = $vars[$i+1];
} else {
$_GET[$vars[$i]] = $vars[$i+1];
}
$i++;
}

if (sizeof($GET_array) > 0) {
while (list($key, $value) = each($GET_array)) {
$_GET[$key] = $value;
}
}
}
}

entscheidend hierbei: getenv(‚PATH_INFO‘) – genau diese environment variable steht nur zur verfügung, wenn acceptpath läuft.

aus eingangs genannten parms kannst du aber die sache sehr leicht patchen…

CODE

$_path_info = str_replace($_SYSTEM[‚SCRIPT_NAME‘],““,$_SYSTEM[‚REQUEST_URI‘]);
putenv(„PATH_INFO=$_path_info“);

gib info ob das läuft…

okay, habs eben einem 1und1 kunden reingebaut –

wichtig:
1. 1&1 stellt keine $_SYSTEM zur Verfügung => $_SERVER liefert die gewünschten Daten
2. 1&1 setzt kein $PHP_SELF => $PHP_SELF setzen per $_SERVER[‚SCRIPT_NAME‘]
3. Einbau in die includes/appli-top und admin/includes/appli-top – sonst läuft das backend nicht
4. vorsicht mit nicht vorausschauend programmierten 3rd party modulen – die z.B. superumständlich und nicht xt-konform programmierte Reiternavigation würde eine Anpassung dutzernder XT-Files nach sich ziehen => statt Reiternavigations-Modul besser die Kategorien-Boxen/Source clonen und dann jeweils anpasssen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.