[mod_rewrite] wie auf Seite verlinken?

smaak

Well-known member
7 Mai 2006
2.811
357
Hallo!

Kurz vorne weg, ich bin absoluter Neuling was SEO und diesen mod_rewrite angeht. Nun habe ich es dann doch geschafft, dass sich die Seiten auf meiner Homepage mit *.html aufrufen lassen. Die alten Links, ?seite=inhalt, funktionieren ebenfalls noch. Nun zu meinen Fragen...

Muss ich noch weitere wichtige Regeln in die .htaccess-Datei packen?

Wie muss ich nun die Links meiner Homepage verlinken, damit die Links von google etc. mit der Endung *.html gespidert werden? Einfach in inhalt.html ändern?

Habt Ihr vllt. sonst noch ein paar nützliche Tipps für mich?

.htaccess-Datei
Code:
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*)\.html$ /?seite=$1
 
Puh da gibt es einiges zu sagen:

1. Wenn du ne Ordnerstrucktur immitieren willst ala domain/hp1/thema1/abstatz2.htm auf rootpfade verlinken.!! D.h. immer die link mit einem / beginnen schreiben FÜR ALLES(auch css dateien bilder und sonstiges).

2. Nach jeder Rule wenn es das war ein [L] setzen für Last keine weiteren Regeln

3. Wenn die ?site= links schon on google indiziert sind solltest du nicht nur ein [L] sondern ein [R=301,L] setzen *oder war es 302 kopfkratz*
Dazu würde ich dir aber andere Rules empfehlen.

4. Fals Du Fehler hast oder eine Regex nicht funzen sollte setz ein RewriteLogLevel
und eine LogDatei Pfad hier der Link dazu.

5. Jap auf html Endung verlinken nicht mehr ?site=...

So und zu deiner Regex, die passt schon ganz gut, bis auf meine oben genannten Punkte. Du kannst es nochmal elber Probieren mit RewriteCond %{QUERY_STRING} rumzuspielen. damit du die R umleitungen machen kannst. Du must aber nicht unbedingt mit RewriteCond arbeiten. Kannst auch ne normale Rule schreiben.

Hoffe ich konnte Dir nen paar Infos geben, welche net allzu verwirrend sind :mrgreen:.

Btw: Cond = Bedingung, Rule = Regel
 
5. Jap auf html Endung verlinken nicht mehr ?site=...

Vielen Dank für die Antwort und deine anderen Ausführungen. Diese werde ich mir morgen einmal zur Brust nehmen und sehen wie weit ich kommen werde. Sollte es überhauptnicht weitergehen werd ich wieder diesen Thread beanspruchen und auf deine Hilfe und die von anderen hoffen! :biggrin:

mfg
 
natürlich musst du auf die neuen urls verlinken. wie soll ansonsten google oder irgendjemand davon was mitbekommen...

und zu punkt 3 von strolch... der richtige wille ist da, der weg ist aber komplett falsch. ;) mal zur erläuterung... 301 heißt soviel wie das was mal unter der url zu erreichen war ist jetzt umgezogen auf ne neue url. (ist sowas wie ein post nachsende auftrag wenn man umgezogen ist ;)) das kennt auch google und ändert im index die url entsprechend ab... was den vorteil bringt dass diese seite nicht nochmal indiziert werden muss sondern bereits ist. aber strolchs vorschlag hat den fehler das man jetzt sagen würde das /autos.html jetzt unter index.php?page=autos erreichbar ist und /autos.html nicht mehr grültig ist, was ja das komplette gegenteil vom gewollten ist. dazu müsste man jetzt ne neue regel formulieren...

PHP:
RewriteRule index\.php?page=(.*)$ /$1.html [R=301]

damit würde man sagen das alle aufrufe von index.php?page=XYZ umgeleitet werden auf XYZ.html. das aber in der form das man sagt das die seite umgezogen ist... das wiederum führt dazu das jetzt XYZ.html auf den server aufgerufen wird. jetzt wird dein server die andere regel anwenden und index.php?page=XYZ aufrufen... aber das vollkommen transparent für den user. somit hättest du das zeil erfüllt ;)
 
PHP:
RewriteRule index\.php?page=(.*)$ /$1.html [R=301]

Also könnte ich diese Zeile 1zu1 in meine .htaccess-Datei übernehmen (bis auf die stelle "page", die heisst bei mir "seite"), oder sieht das für meine Seite wieder anders aus?

Zudem kommt ja noch, das unter der Domain früher ein Forum lief wovon noch vereinzelt URls bei Google auftauchen. Müsste ich die dann nochmal separat aufführen, denn die heissen ja showthread.php?id=XXX usw.?
 
@ZeroCCC

So meinte ich das doch :(, ich bin schon sau lang wach und fals ich jemanden damit verwirrt habe tut es mir Leid, aber so wie Zero es sagt meinte ich es, deswegen auch RewriteCond mit %{QUERY_STRING}. Sorry nochmal. Wenn ich fiter bin editier ich den Post nochmal.

*edit
Das forum würde ich erstmal so lassen, weil um das zum laufen zu bringen musst du das gesammte Foren Script umändern auf die html links. Solang das nicht ist nutzen dir irgendwelche RewriteRules in der htaccess wenig.

Nimm die hier:
Code:
[COLOR=#000000][COLOR=#0000bb]RewriteRule index[/COLOR][COLOR=#007700]\.[/COLOR][COLOR=#0000bb]php[/COLOR][COLOR=#007700]?[/COLOR][COLOR=#0000bb]seite[/COLOR][COLOR=#007700]=(.*)$ /$[/COLOR][COLOR=#0000bb]1.html [/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000bb]R[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000bb]301[/COLOR][COLOR=#007700],N] [/COLOR][/COLOR]

*edit 2
Nur zur Info das N heist "Die neu festgestellte URL soll noch einmal alle Regeln durchlaufen."
 
Zuletzt bearbeitet:
*edit
Das forum würde ich erstmal so lassen, weil um das zum laufen zu bringen musst du das gesammte Foren Script umändern auf die html links. Solang das nicht ist nutzen dir irgendwelche RewriteRules in der htaccess wenig.

Nimm die hier:
Code:
[COLOR=#000000][COLOR=#0000bb]RewriteRule index[/COLOR][COLOR=#007700]\.[/COLOR][COLOR=#0000bb]php[/COLOR][COLOR=#007700]?[/COLOR][COLOR=#0000bb]seite[/COLOR][COLOR=#007700]=(.*)$ /$[/COLOR][COLOR=#0000bb]1.html [/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000bb]R[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000bb]301[/COLOR][COLOR=#007700],N] [/COLOR][/COLOR]

Das Forum existiert nicht mehr, es lief früher mal unter der Domain. ;)
Danke für den Code!

mfg
 
Wenn das Forum mal da lief in dem Verzeichnis lief und Du den alten Content aus Google entfernen willst, dann ja mach noch einen rule für den damaligen Forumspfad. Die kannst du dann direkt auf die index mit einem [R=301,L] Oder Du sendest sogar nen anderen Redirect code da gibt es auch einen für nicht mehr existent. Was nu besser für dein Ranking ist weis ich nicht.
 
Oha, schon über ein Jahr alt der Thread. :biggrin:

Nachdem ich jetzt das Forum auf modrewrite.de ewig durchwühlt und dennoch nichts gefunden habe, frage ich noch mal euch.

Ich möchte folgende Domains:

https://www.domain.de/
https://domain.de/ und
https://www.subdomain.domain.de/

auf https://subdomain.domain.de/ umleiten. Eben so, dass die nur diese Subdomain ohne ein www. davor angesprochen wird. Dies sollte aber nur bei subdomain.domain.de erfolgen, nicht jedoch bei anderesubdomain.domain.de. Ebenso sollte die Rule aus dem ersten Post noch funktionieren.

Verständlich? Ist sowas möglich? Lösungsansätze?
 
Verständlich? Ist sowas möglich? Lösungsansätze?

Kommt auf die Ausgangsbedingung an: Sind alle Subdomains eigene VHosts, geht das ganze mit ner einfachen Redirect-Anweisung (also sogar ohne ModRewrite).
Ansonsten kannst du mit RewriteCondition den Host-Header überprüfen und wenn der ungleich der gewünschten Subdomain ist umleiten. Klar?