Zur Navigation

.htaccess Weiterleitung xtcommerce

1 Dennis (Gast)

Hallo,

ich habe folgendes Problem:

Unter der URL www.beispiel.com/onlineshop liegt mein onlineshop.
Den selben Shop habe ich nun auch auf einem anderen Server
unter der URL www.beispiel.info, da der erste Server shared ist und somit zulangsam.
Nun möchte ich alle Seite des Shops von www.beispiel.com/onlineshop auf
www.beispiel.info umleiten.

So habe ich es versucht:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^http://www.beispiel.com/onlineshop [NC]
RewriteRule ^(.*)$ http://www.beispiel.info/$1 [R=301,L]

Die Weiterleitung der Startseite ist ok.
Aber bei den Produktseiten erscheint im Browser:
http://www.beispiel.info/index.php/produkt

Wenn das index.php nicht drinnen wäre, würde es stimmen.
Was mache ich falsch?

Vielen Dank und herzliche Grüße
Dennis

23.09.2013 18:05

2 Jörg Kruse

Hier finden sich gleich zwei Fehler:

RewriteCond %{HTTP_HOST} !^http://www.beispiel.com/onlineshop [NC]

1. Der HTTP_HOST beinhaltet entweder einen Domainnamen oder eine IP-Adresse, aber nicht die gesamte URL

2. das "!" verneint die Bedingung - du willst aber ja weiterleiten, wenn der HOST = www.beispiel.com

Ich würde die Bedingung so formulieren:

RewriteCond %{HTTP_HOST} ^www\.beispiel\.com$ [NC]

23.09.2013 20:23

3 Dennis (Gast)

Hallo Jörg,

vielen Dank für Ihre Bemühungen.

Da ich unter http://www.beispiel.com/ noch einen Blog habe, der bleiben soll, kann ich nicht die ganze Domain weiterleiten, sondern nur diesen Unterunterordner mit dem Shop. http://www.beispiel.com/onlineshop

Ist das auch irgendwie zu machen?

23.09.2013 20:47

4 Jörg Kruse

Das Unterverzeichnis kannst du in die RewriteRule einbauen, in etwa so:

RewriteRule ^onlineshop((/.*)?)$ http://www.beispiel.info/$1 [R=301,L]


PS: in Webforen wird sich normalerweise gedutzt :)

23.09.2013 21:06 | geändert: 23.09.2013 21:08

5 Dennis (Gast)

Hallo Jörg

Ich vergesse das immer wieder mit dem DU.

Ich habe es jetzt so, aber es geht nicht, keine Weiterleitung.
Es bleibt die alte Seite

RewriteEngine On


RewriteCond %{HTTP_HOST} ^www\.beispiel\.com$ [NC]
RewriteRule ^onlineshop((/.*)?)$ http://www.beispiel.info/$1 [R=301,L]

Die .htaccess liegt im Shop-Verzeichnis, also http://www.beispiel.com/onlineshop

Aber ig

23.09.2013 21:31

6 Jörg Kruse

Die .htaccess liegt im Shop-Verzeichnis, also http://www.beispiel.com/onlineshop

Dann sollte die RewriteRule ohne das Verzeichnis im URL-Muster, so wie in deinem ersten Beitrag, ausreichen.

Es kann dann allerdings sein, dass die URL http://www.beispiel.com/onlineshop ohne Slash am Ende nicht erfasst wird, da sie nicht innerhalb dieses Verzeichnis liegt.

23.09.2013 21:45

7 Dennis (Gast)

Jetzt habe ich es so:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.beispiel\.com$ [NC]
RewriteRule ^(.*)$ http://www.beispiel.info/$1 [R=301,L]

Startseite ist richtig, aber die Unterseiten des Shop stimmen nicht.
Da kommt immer http://www.beispiel.info/index.php/unterseite

Da ist also das index.php zu viel.

Kann ich Dir mal meine Originale .htaccess schicken per Mail schicken?
Vielleicht ist da mehr zu sehen

23.09.2013 22:03

8 Jörg Kruse

Da scheint dann wohl noch irgendwas dazwischen zu funken.

Steht sonst noch was in der .htaccess Datei? Einfluss kann auch die .htaccess Datei des darüber liegenden Verzeichnisses nehmen.

Kann ich Dir mal meine Originale .htaccess schicken per Mail schicken?

Ja. Du kannst sie auch hier posten und zur Anonymisierung Domainnamen ersetzen - dann können auch andere, die diesen Thread lesen, das Problem nachvollziehen.

23.09.2013 22:16

9 Dennis (Gast)

Erst noch einmal recht herzlichen dank für Deine Mühen.

Das ist die .htaccess aus dem Shopverzeichnis, also www.beispiel.com/onlineshop

# RewriteEngine on
# RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

DirectoryIndex index.php

<IfModule mod_rewrite.c>

SetEnv HTTP_MOD_REWRITE On

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/media/
RewriteCond %{REQUEST_URI} !^/extAdmin/
RewriteCond %{REQUEST_URI} !^/skin/
RewriteCond %{REQUEST_URI} !^/js/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* index.php
</IfModule>

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 seconds"
    ExpiresByType image/x-icon "access plus 2692000 seconds"
    ExpiresByType image/jpeg "access plus 2692000 seconds"
    ExpiresByType image/png "access plus 2692000 seconds"
    ExpiresByType image/gif "access plus 2692000 seconds"
    ExpiresByType application/x-shockwave-flash "access plus 2692000 seconds"
    ExpiresByType text/css "access plus 2692000 seconds"
    ExpiresByType text/javascript "access plus 2692000 seconds"
    ExpiresByType application/x-javascript "access plus 2692000 seconds"
</IfModule>
<IfModule mod_headers.c>
    <FilesMatch "\\.(ico|jpe?g|png|gif|swf|css|js)$">
        Header set Cache-Control "max-age=2692000, public"
    </FilesMatch>
    Header unset ETag
    Header unset Last-Modified
</IfModule>

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.beispiel\.com$ [NC]
RewriteRule ^(.*)$ http://www.beispiel.info/$1 [R=301,L]

Die .htacces aus dem Verzeichnis oberhalb , also www.beispiel.com
<Files 403.shtml>
order allow,deny
allow from all
</Files>

AddType video/ogg ogm
AddType video/ogg ogg
AddType video/webm weba
AddType video/x-m4v m4v
AddType audio/ogg oga
AddType audio/wav wav
AddType audio/mp4 m4a
AddType audio/webm webma

23.09.2013 22:22

10 Jörg Kruse

Diese Rule funkt dazwischen:

RewriteRule .* index.php

Das L-Flag ("Last Rule") in deiner Rule sorgt eigentlich dafür, dass bei einem Zutreffen keine weitere Rule mehr ausgeführt wird - das nützt aber natürlich nichts wenn sie ganz am Ende steht :). Wenn du die Weiterleitung oberhalb der anderen RewriteRules und RewriteConds positionierst, sollte die Weiterleitungs-URL nicht mehr verhunzt werden.

Das "RewriteEngine On" braucht es übrigens nur einmal in einer .htaccess Datei.

23.09.2013 22:45