Zur Navigation

Bestimmte Urls auf Fehlerseite leiten

1 Horst_Braun

Hallo,

ich bin mal wieder auf der Suche nach Hilfe:

Alle meinen englischen Urls sind so aufgebaut: www.adventure-compact.com/en/...

Ich möchte, dass man bei allen welche nicht so sind also z.B. www.adventure-compact/test/usw.html auf die 404 Felermeldung kommt. Das soll bewirken, dass google nur die richtigen /en/ Urls aufnimmt.

Geht das?

MfG

08.09.2008 21:35

2 Jörg

Probier das mal:

RewriteEngine on

RewriteBase /

RewriteCond %{THE_REQUEST} !/en/
RewriteRule .* - [G,L]

Das Flag "G" erzeugt einen Fehler 410, welcher besser noch geeignet ist als ein 404er

08.09.2008 22:11

3 Horst_Braun

Da meine htacces von 2 domains genutzt wird bräuchte ich die Regel noch etwas genauer. Also mit adventure-compact.com drin.

Ist das so richtig?

RewriteCond %{THE_REQUEST} adventure-compact.com/en/
RewriteRule .* - [G,L]

Oder fehlt da ein Sonderzeichen?

Danke

08.09.2008 22:24

4 Jörg

adventure-compact.com ist der Host und gehört nicht zum Request und benötigt entsprechend eine eigene RewriteCond. Zudem muss bei /en/ das ! erhalten bleiben - denn du möchtest ja eine 410 asgeben, wenn dieser Bestandteil nicht im URL vorkommt?

RewriteCond %{HTTP_HOST} adventure-compact\.com
RewriteCond %{THE_REQUEST} !/en/
RewriteRule .* - [G,L]

08.09.2008 22:30

5 Horst_Braun

... funktioniert!! Danke.

Nur: Leider geht jetzt die Startseite selbst nicht mehr. Also Adventure-Compact.com (da hatte ich doch eine umleitung auf eine Url, dass die Seite auf englisch startet, aber "adventure-compact" stehen bleibt)

Brächte dazu noch eine Ausnahmeregel:

So?
RewriteRule adventure-compact\.com - [L,NE]

Danke

08.09.2008 22:42

6 Jörg

Nimm statt einem "*" ein "+" - dann muss mindestens ein Zeichen nach dem / kommen:

RewriteCond %{HTTP_HOST} adventure-compact\.com
RewriteCond %{THE_REQUEST} !/en/
RewriteRule .+ - [G,L]

08.09.2008 22:49

7 Horst_Braun

:-(

Geht nicht. Bestimmt weil zuvor folgendes passiert:

RewriteCond %{HTTP_HOST} adventure-compact\.com$
RewriteRule ^$ index.php?menuid=1&getlang=en

Oder?

MfG

08.09.2008 22:52 | geändert: 08.09.2008 22:52

8 Jörg

Ich würde die 410er Rule möglichst weit nach vorne schieben. Normale Umschreibungen wie die in Beitrag 7 sollten immer als letztes aufgeführt werden

08.09.2008 23:00

9 Horst_Braun

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^adventures-kompakt.de$ [NC]
RewriteRule ^(.*)$ http://www.adventures-kompakt.de/$1 [L,R=301]

RewriteCond %{HTTP_HOST} adventures-kompakt\.de$
RewriteRule ^$ index.php?menuid=1&getlang=de

RewriteCond %{HTTP_HOST} ^adventure-compact.com$ [NC]
RewriteRule ^(.*)$ http://www.adventure-compact.com/$1 [L,R=301]

RewriteCond %{HTTP_HOST} adventure-compact\.com$
RewriteRule ^$ index.php?menuid=1&getlang=en

RewriteCond %{HTTP_HOST} adventure-compact\.com
RewriteCond %{THE_REQUEST} !/en/
RewriteRule .+ - [G,L]

RewriteRule ^bilder/(.*)$ - [L,NE]
RewriteRule ^css/(.*)$ - [L,NE]
RewriteRule ^dokumentation/(.*)$ - [L,NE]
RewriteRule ^dokumente/(.*)$ - [L,NE]
RewriteRule ^editorbild/(.*)$ - [L,NE]
RewriteRule ^images/(.*)$ - [L,NE]
RewriteRule ^interna/(.*)$ - [L,NE]
RewriteRule ^js/(.*)$ - [L,NE]
RewriteRule ^lib/(.*)$ - [L,NE]
RewriteRule ^plugins/(.*)$ - [L,NE]
RewriteRule ^setup/(.*)$ - [L,NE]
RewriteRule ^templates/(.*)$ - [L,NE]
RewriteRule ^templates_c/(.*)$ - [L,NE]
RewriteRule ^video/(.*)$ - [L,NE]
RewriteRule ^zusatz/(.*)$ - [L,NE]
RewriteRule ^zusatz/banner/(.*)$ - [L,NE]
RewriteRule ^zusatz/bewertung/(.*)$ - [L,NE]
RewriteRule ^zusatz/spielhilfen/(.*)$ - [L,NE]

RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ index.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5&var6=$6&var7=$7&var8=$8&var9=$9 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ index.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5&var6=$6&var7=$7&var8=$8 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ index.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5&var6=$6&var7=$7 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ index.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5&var6=$6 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ index.php?var1=$1&var2=$2&var3=$3&var4=$4&var5=$5 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ index.php?var1=$1&var2=$2&var3=$3&var4=$4 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ index.php?var1=$1&var2=$2&var3=$3 [L]
RewriteRule ^([^/]*)/([^/]*)$ index.php?var1=$1&var2=$2 [L]
RewriteRule ^([^/]*).html$ index.php?var1=$1 [L]

Geht nicht, wenn ich es über alle Regeln setzte (also unter RewriteEngine on und RewriteBase /) dann sagt, er dass keine indesp.php mehr existiert. Wenn ich es so wie oben habe dann meldet er "The requested resource
/
is no longer available on this server and there is no forwarding address. Please remove all references to this resource."

Liegt der Fehler in "RewriteRule .+ - [G,L]"? Außer auf der Startseite geht das mit dem /en/ und demr Fehlermeldung, wenn /en/ fehlt.

Danke

08.09.2008 23:08

10 Jörg

Dann häng hier nochmal ein L-Flag dran:

RewriteCond %{HTTP_HOST} adventure-compact\.com$
RewriteRule ^$ index.php?menuid=1&getlang=en [L]

08.09.2008 23:16