OXID CE mod_rewrite

Hallo zusammen,

Ich habe OXID auf einem Hosteurope V-Server laufen. Innerhalb einer Subdomain war die Installation einwandfrei möglich. Nun wollte ich heute die Installation erneut auf der TLD durchführen, und siehe da, unter Anforderungen wird bei Server Apache mod_rewrite als rot gekennzeichnet und ich komme nicht weiter. PHPINFO zeigt mir unter loaded modules rewrite an. Die .htaccess ist ebenfalls vorhanden und sieht korrekt aus, der path sollte mit / ja passen da es im root liegt. Ich bin ein wenig verzweifelt. Als V-Server Tool steht übrigens PLESK zur Verfügung, als OS Ubuntu 8.04

Vielen Dank für jeden Tip!

Grüße,
Matthias

keiner ne Idee?

[QUOTE=RealFairPlayer;12069]Hallo zusammen,

Ich habe OXID auf einem Hosteurope V-Server laufen. Innerhalb einer Subdomain war die Installation einwandfrei möglich. Nun wollte ich heute die Installation erneut auf der TLD durchführen, und siehe da, unter Anforderungen wird bei Server Apache mod_rewrite als rot gekennzeichnet und ich komme nicht weiter. PHPINFO zeigt mir unter loaded modules rewrite an. Die .htaccess ist ebenfalls vorhanden und sieht korrekt aus, der path sollte mit / ja passen da es im root liegt. Ich bin ein wenig verzweifelt. Als V-Server Tool steht übrigens PLESK zur Verfügung, als OS Ubuntu 8.04

Vielen Dank für jeden Tip!

Grüße,
Matthias[/QUOTE]

die config.inc.php hast Du auch angepasst?

HI!

Danke für die Antwort, die config.inc.php kommt erst im Laufe des setups zum Zuge, richtig? Aber ich hänge ja bei der Installation bereits auf der ersten Seite wo die Voraussetzungen überprüft werden, was ich halt überhaupt gar nicht verstehe ist die Tatsache das auf dem selben VServer eine funktionierende Version installiert ist und auch einwandfrei läuft.

Hallo,

die .htaccess lässt sich manuell mit dem Wert “RewriteBase /” anpassen.
Welche Version benutzt Du denn? Eventuell hilft ein Update auf die derzeitige 4.1.4-21266?

Gruß

Hallo Marco,

Meine .htaccess habe ich bereits angepasst hier ist sie:

<IfModule mod_rewrite.c>

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !(\/core\/|\/export\/|\/modules\/|\/out\/|\/setup\/|\/tmp\/|\/views\/)
RewriteRule admin/test\.php$ admin/test.php?mod_rewrite=1

RewriteCond %{REQUEST_URI} !(\/admin\/|\/core\/|\/export\/|\/modules\/|\/out\/|\/setup\/|\/tmp\/|\/views\/)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !(\.html|\/|\.jpg|\.css|\.pdf|\.doc|\.gif|\.png|\.js)$ %{REQUEST_URI}/ [R=301,L]

RewriteCond %{REQUEST_URI} !(\/admin\/|\/core\/|\/export\/|\/modules\/|\/out\/|\/setup\/|\/tmp\/|\/views\/)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (\.html|\/)$ oxseo.php


</IfModule>

Options -Indexes

Dies passiert bei der Version OXID_ESHOP_CE_4.1.3_19918 als auch bei der aktuellen OXID_ESHOP_CE_4.1.4-21266

Jedoch läuft die ältere Version einwandfrei auf dem selben Vserver. Es kann eigentlich nur was mit den VHOST settings zu tun haben, ich wüsste nur nicht wo ich drehen soll. Unter loaded_modules taucht rewrite einwandfrei auf.

Langsam verzweifel ich wirklich, schon wieder 3 Stunden investiert, geht nicht, obwohl es auf demselben Server bereits läuft, ich dreh durch …

Hi,

Die .htaccess-Datei hat auch wirklich einen Punkt davor?
Kommst Du bei Deinem VServer selbst in die Apache-Konfiguration? Ubuntu kommt standardmäßig mit AllowOverride = OFF, muss aber für den sauberen Betrieb der URL-Umschreibungen auf ON gestellt werden.

Gruß

Hi!

Ich komme grundsätzlich (mittels SSH) überall rein :slight_smile: In welcher der 1000end configs müsste ich denn gucken wo AllowOverride welchen Status hat? An allen Stellen (configs) wo ich bisher nachgeguckt habe steht es auf All - kann aber sein das ich nicht alle gefunden habe :frowning: Irgendwie alles sehr merkwürdig. Ich bin total begeistert von OXID und möchte es unbedingt einsetzen …

Mittlerweile konnte ich die Installation beenden, anschließend konnte ich mich nicht einloggen, nach einem manuellen reset des pw in der DB konnte ich mich einloggen. Einen Artikel konnte ich mittlerweile hochstellen, auch sonst habe ich noch keine Fehler bemerkt (was noch kommen kann).

Was habe ich getan?

In der oxsysrequirements.php habe ich folgendes geändert:

Alter code:


    public function checkModRewrite()
    {
        $iModStat = null;
        $sHost   = $_SERVER['HTTP_HOST'];
        $sScript = $_SERVER['SCRIPT_NAME'];
        if ( $sScript && $rFp = @fsockopen( $sHost, 80, $iErrNo, $sErrStr, 10 ) ) {
            $sScript = str_replace( basename($sScript), '../admin/test.php', $sScript );

            $sReq  = "POST $sScript HTTP/1.1
";
            $sReq .= "Host: $sHost
";
            $sReq .= "User-Agent: oxid setup
";
            $sReq .= "Content-Type: application/x-www-form-urlencoded
";
            $sReq .= "Content-Length: 0
"; // empty post
            $sReq .= "Connection: close

";

            $sOut = '';
            fwrite( $rFp, $sReq );
            while ( !feof( $rFp ) ) {
                $sOut .= fgets( $rFp, 100 );
            }
            fclose( $rFp );

            $iModStat = ( strpos( $sOut, 'mod_rewrite_on' ) !== false ) ? 2 : 0;
        } else {
            if ( function_exists( 'apache_get_modules' ) ) {
                // it does not assure that mod_rewrite is enabled on current host, so setting 1
                $iModStat = in_array( 'mod_rewrite', apache_get_modules() ) ? 1 : 0;
            } else {
                $iModStat = -1;
            }
        }
        return $iModStat;
    }

neuer Code:


    public function checkModRewrite()
    {
        $iModStat = null;
        $sHost   = $_SERVER['HTTP_HOST'];
        $sScript = $_SERVER['SCRIPT_NAME'];
        if ( $sScript && $rFp = @fsockopen( $sHost, 80, $iErrNo, $sErrStr, 10 ) ) {
            $sScript = str_replace( basename($sScript), '../admin/test.php', $sScript );

            $sReq  = "POST $sScript HTTP/1.1
";
            $sReq .= "Host: $sHost
";
            $sReq .= "User-Agent: oxid setup
";
            $sReq .= "Content-Type: application/x-www-form-urlencoded
";
            $sReq .= "Content-Length: 0
"; // empty post
            $sReq .= "Connection: close

";

            $sOut = 'mod_rewrite_on';
            fwrite( $rFp, $sReq );
            while ( !feof( $rFp ) ) {
                $sOut .= fgets( $rFp, 100 );
            }
            fclose( $rFp );

            $iModStat = ( strpos( $sOut, 'mod_rewrite_on' ) !== false ) ? 2 : 0;
        } else {
            if ( function_exists( 'apache_get_modules' ) ) {
                // it does not assure that mod_rewrite is enabled on current host, so setting 1
                $iModStat = in_array( 'mod_rewrite', apache_get_modules() ) ? 1 : 0;
            } else {
                $iModStat = -1;
            }
        }
        return $iModStat;
    }

Damit habe ich die Abfrage quasi einfach ausgehebelt, richtig? Mein mod_rewrite funktioniert bisher dennoch.

Grüße,
Matze

P.S. Wäre interessant wenn mir jemand aufschlüsseln könnte was

$iModStat = ( strpos( $sOut, ‘mod_rewrite_on’ ) !== false ) ? 2 : 0;

genau bedeutet :slight_smile:

Hi,

das ist aber nicht die feine englische :-)))
mod_rewrite funktioniert trotzdem? Das heisst, Du kannst im Frontend alle Kategorien und Artikel aufrufen und die URLs werden sauber umgeschrieben?

Ich hab in der Zwischenzeit auch gegrast und in meinen Aufzeichnungen zum Thema AllowOverride folgendes gefunden:


16. $ sudo nano /etc/apache2/sites-available/default

and change 

        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

to 

        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride all
                Order allow,deny
                allow from all
        </Directory>


Restart your apache: $ sudo /etc/init.d/apache2 restart

Vielleicht isses ja nochmal an anderer Stelle interessant…

Gruß

Hi!

Ja, es funktioniert bisher alles was ich testen konnte, Artikel werden auch SEO konfort angezeigt, bisher alles in Butter. Dein Tip zur default ist bei mir allerdings leider bereits so eingestellt. Ehrlich gesagt habe ich ein bisschen Angst ein so installiertes System produktiv zu nehmen… aber wenn keiner mehr ne Idee hat…

Grüße,
Matze

Ehrlich gesagt habe ich ein bisschen Angst ein so installiertes System produktiv zu nehmen…

Dat sollte so laufen :wink:

Hi Marco,

Na, dein Wort in Gottes Ohr :slight_smile:

Danke für die Infos, damit läuft mein Testshop endlich.

Aufgrund erfolgloser anderer Lösungvorschläge ist diese “schmutzige” :wink: Vorgehensweise immer noch die einzige Lösung für einige Installationen. Vielen Dank nochmal!

Das File findet sich im Verzeichnis /core, der code ist in Zeile 506 (ca, je nach Installation) zu ändern;

Man sollte unbedingt sicherstellen, dass ModRewrite wirklich läuft, sonst ist das hier keine gute Idee