Seite 1 von 1

Hilfe mit RewriteRule

Verfasst: 24.09.2009, 10:52
von baju
Habe Probleme mit einer Url Umschreibung.

RewriteRule ^index\.(php|html)$ https://www.domain.com/ [R=301,L]
RewriteCond %{HTTP_HOST} !^www.domain.com$
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]
RewriteRule ^menschen-([^/]*)\.html$ /menschen.html?id=$1 [L]

Unterseite ist mehrfach erreichbar.
zb. unter:
https://www.domian.com/menschen.html
https://www.domian.com/menschen-.html
https://www.domian.com/menschen-a.html
https://www.domian.com/menschen-ab.html

Was mache ich Falsch?

Besten Dank für eure Hilfe
Gruß baju

Verfasst:
von

Verfasst: 24.09.2009, 10:56
von TBT
na es steht doch hier in deiner Regel

RewriteRule ^menschen-([^/]*)\.html$ /menschen.html?id=$1 [L]

was soll denn erreichbar sein?

Verfasst: 24.09.2009, 11:43
von baju
Die Unterseiten werden durch ein minus Zeichen getrennt.
https://www.domian.de/menschen-afrika.html
https://www.domian.de/menschen-amerika.html
Das funktioniert auch wunderbar...

Aber leider erreicht man die Startseite Menschen auch unter folgenden Adressen:
https://www.domian.de/menschen.html
auch unter:
https://www.domian.de/menschen-.html
oder
https://www.domian.de/menschen-a.html
oder
https://www.domian.de/menschen-abc.html

Die URLs verweisen all auf die Startseite Menschen. Ist das nicht ein Problem für Google? Wird das nicht als doppelter Content gewertet?
Besten Dank
Gruß baju

Verfasst:
von

Verfasst: 24.09.2009, 12:50
von Synonym
Prüfe doch einfach auf der entsprechenden Seite ob es diese ID überhaupt gibt. Wenn ja, dann anzeigen, wenn nein, dann Fehler 404.

URL: menschen-daheim.html
Aufruf von menschen.html?id=daheim

menschen.html prüft, ob es "daheim" gibt. Wenn ja, dann Daten abfragen und anzeigen, wenn nein, dann Fehler senden.

Verfasst: 24.09.2009, 13:43
von baju
Erst einmal vielen Dank für die Antworten.

Ich bin leider ein absoluter Anfänger in Mod Rewrite.

"Wenn ja, dann Daten abfragen und anzeigen, wenn nein, dann Fehler senden."

Wie mache ich das, damit ein Fehler 404 ausgegeben wird wenn es die ID nicht gibt? Habe da absolut keinen Plan.

Gruß baju

Verfasst: 26.09.2009, 07:52
von baju
Ich bekomme das einfach nicht hin!

Kann mir denn keine Helfen?

Verfasst: 26.09.2009, 08:01
von Synonym
Was macht denn die menschen.html genau? Was steht denn in der drinnen? Ohne deren Arbeitsweise zu kennen kann man auch nichts genaueres sagen. Die Antwort auf Deine Frage hast Du ja eigentlich schon, nun weißt Du nicht wie Du es umsetzen sollst. Ist verständlich, aber hier weiß das auch keiner, da keiner Dein System kennt.

Verfasst: 26.09.2009, 10:28
von baju
Ich habe die Seiten mit server side includes eingebunden.

<?switch ($id){
case "asien":
include("menschen/asien.html");
break;
default:
include ("menschen/home.html");
}?>

Der Aufruf erfolgt dann über:

<ul id="subnavlist">
<li id="subactive"><a href="menschen-home.html" id="subcurrent">home</a></li>
<li><a href="menschen-asien.html">Asien</a></li>
</ul>

Verfasst: 26.09.2009, 10:47
von Synonym
Ja ok, da steht aber auch drinnen, dass wenn es kein Übereinstimmung mit dem "case" gibt, dann eben die home.html aufgerufen wird (default-Bereich).

Also "asien" ruft menschen/asien.html auf
alles andere, was nicht per Case abgedeckt ist, wird über default abgewickelt.

Du hast also so wie ich es sehe eine menschen.html. Die soll also home.html aufrufen
Dann hast Du noch "Ländernamen" die die jeweilige Datei einbinden.

Daher musst Du nun unterscheiden, ob die "$id" mit übergeben wurde oder nicht.
Entweder etwas in der Richtung

Code: Alles auswählen

<?
if&#40;isset&#40;$_GET&#91;'id'&#93;&#41;&#41;
&#123;
	switch &#40;$id&#41;&#123;
	case "asien"&#58;
	include&#40;"menschen/asien.html"&#41;;
	break;
	default&#58;
   header &#40;'HTTP/1.0 404 Not Found'&#41;;
	include &#40;"fehler.html"&#41;;
	&#125;
&#125;
else
&#123;
	include&#40;"menschen/home.html"&#41;;
&#125;
?>
oder Du setzte für das "home" in der htaccess auch einen Wert.

Code: Alles auswählen

RewriteRule ^menschen\.html$ /menschen.html?id=home &#91;L&#93;
und prüfst danach dann auch wieder im Switch

Code: Alles auswählen

<?
switch &#40;$id&#41;&#123;
case "home"&#58;
include&#40;"menschen/home.html"&#41;;
break;
case "asien"&#58;
include&#40;"menschen/asien.html"&#41;;
break;
default&#58;
header &#40;'HTTP/1.0 404 Not Found'&#41;;
include &#40;"fehler.html"&#41;;
&#125;


?>
oder gehst einen ganz anderen Weg. Jedenfalls darf Dein "default" nicht das "home" sein, sonst wird das immer aufgerufen, egal ob es stimmt oder nicht.

Die Fehler.html ist dann Deine Fehlerseite, oder auch eine andere wenn es schon eine gibt. Das Header() kann auch in die Fehlerseite mit rein und muss nicht in den Switch. Es sendet auch nur den entsprechenden 404-Header.

Gegenfrage:
Gibt es die URL menschen.html überhaupt oder heißt die menschen-home.html? Wenn es menschen.html nicht gibt, dann kannst Du bei der zweiten Version den zusätzlichen Eintrag in der htaccess weglassen.

Verfasst: 26.09.2009, 17:13
von baju
Sie heißt menschen-home.html. Habe den Eintrag in der htaccess weggelassen und alles funktioniert bestens.

Danke Dir vielmals! :D

Gruß baju