Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Link per .htaccess ändern

Mehrere Domains, Domain-Umzug, neue Dateinamen, 301/302
Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 04.03.2012, 14:26

PSVFabian hat geschrieben:Noch was: Kann ich zusätzlich sowas hier auch noch alles umleiten?

lustig.php?do=matches&tid=39
Sollte kein Problem sein, aber erst nach dem Mittagsschlaf.
PSVFabian hat geschrieben:Öhm, die verstehe ich irgendwie nicht so ganz. :oops:
Habe ich mir auch erst für den nächsten Winter als Lernstoff vorgenommen.

Ungetestet, doch die Bedingung vor der Regel sollte eigentlich eine Endlosschleife verhindern.

Code: Alles auswählen

RewriteCond %{REQUEST_URI} !^/lustig.php$
RewriteRule ^lustig$ /lustig.php [L]
Edit: Nee, da habe ich einen Denkfehler drinne. Die 301 leitet ja von lustig.php auf lustig weiter und durch den Aufruf von lustig wird ja hier die lustig.php ausgeliefert, woraus sich eine Endlosschleife ergibt. Das geht wohl wirklich nur wie in den Varianten 5 und 6 auf der verlinkten Seite, dass man an der lustig.php einen QueryString anhängt und den dann per Bedingung sperrt.

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 04.03.2012, 15:44

Zuerst einmal die einfachere Regel. Wenn Du eine zweite RewriteRule so gestaltest, dann solltest Du mit

"www.hallo.de/lustig-matches-39"

die Seite

"www.hallo.de/lustig.php?do=matches&tid=39"

aufrufen können.

Code: Alles auswählen

RewriteRule ^lustig$ /lustig.php [L]
RewriteRule ^lustig-([a-zA-Z_-]+)-([0-9]+)$ /lustig.php?do=$1&tid=$2 [L]
Zu der anderen Sache, je länger ich die Variante 5 von der Seite betrachte, umso weniger verstehe ich die. Wo kommt die Seite artikel....html mit Zahl ohne Bindestrich zwischen artikel und Zahl her, wo sich doch alles andere um seite....html dreht?
RewriteRule ^artikel([0-9]+).html$ /seite.php?id=$1&umgeleitet=ja
https://suchmaschinentricks.at/tipps-tr ... write.html

Vielleicht sollte es ja so aussehen:

Code: Alles auswählen

RewriteRule ^seite-([0-9]+).html$ /seite.php?id=$1&umgeleitet=ja

PSVFabian
PostRank 2
PostRank 2
Beiträge: 37
Registriert: 06.02.2012, 08:04

Beitrag von PSVFabian » 04.03.2012, 16:31

Ich will jetzt erstmal wissen wie ich DC vermeiden kann.

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 04.03.2012, 16:43

Da sollte bereits ein Canonical-Tag im Head der Seite helfen, um Google mitzuteilen, welches die bevorzugte Seite ist:

<link rel="canonical" href="https://www.hallo.de/lustig" />

PSVFabian
PostRank 2
PostRank 2
Beiträge: 37
Registriert: 06.02.2012, 08:04

Beitrag von PSVFabian » 04.03.2012, 16:54

Ich habe aber keinen Zugriff auf den Head dieser Datei, bzw. weiß nicht wie.

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 04.03.2012, 17:30

Ich glaube, ich habe es.

Wenn ich diese URL eingebe "https://localhost/demoshop/demo.php",
so springt im Browser die URL um auf "https://localhost/demoshop/demo".

Code: Alles auswählen

RewriteEngine on 
DirectorySlash Off

RewriteCond %&#123;QUERY_STRING&#125; !^var=nurso$
RewriteRule ^demoshop/demo.php$ /demoshop/demo &#91;L,R=301&#93;

RewriteCond %&#123;QUERY_STRING&#125; !^var=nurso$
RewriteRule ^demoshop/demo$ /demoshop/demo.php?var=nurso &#91;L&#93;
Eingekürzt für Deine Seite sollte es dann so aussehen:

Code: Alles auswählen

RewriteEngine on 
DirectorySlash Off

RewriteCond %&#123;QUERY_STRING&#125; !^var=nurso$
RewriteRule ^lustig.php$ /lustig &#91;L,R=301&#93;

RewriteCond %&#123;QUERY_STRING&#125; !^var=nurso$
RewriteRule ^lustig$ /lustig.php?var=nurso &#91;L&#93;

PSVFabian
PostRank 2
PostRank 2
Beiträge: 37
Registriert: 06.02.2012, 08:04

Beitrag von PSVFabian » 04.03.2012, 19:18

@Melegrian: WOW! Vielen Dank! Jetzt funktioniert alles wunderbar :) 8)

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 05.03.2012, 00:39

Zur DirectorySlash Directive solltest Du Dir noch die Security Warning durchlesen, ob die Hinweise für Deine Site relevant sein könnten. Nicht das am Ende der Schaden größer ist als der Nutzen:

https://httpsd.apache.org/docs/2.0/mod/mod_dir.html

PSVFabian
PostRank 2
PostRank 2
Beiträge: 37
Registriert: 06.02.2012, 08:04

Beitrag von PSVFabian » 05.03.2012, 18:07

Melegrian hat geschrieben:Zur DirectorySlash Directive solltest Du Dir noch die Security Warning durchlesen, ob die Hinweise für Deine Site relevant sein könnten. Nicht das am Ende der Schaden größer ist als der Nutzen:

https://httpsd.apache.org/docs/2.0/mod/mod_dir.html
Verstehe da nur Bahnhof. Wärst du so nett? :D

PSVFabian
PostRank 2
PostRank 2
Beiträge: 37
Registriert: 06.02.2012, 08:04

Beitrag von PSVFabian » 05.03.2012, 19:13

Melegrian´s Art und Weise funktioniert leider doch nicht. Bei "www.hallo.de/lustig.php?do=matches&tid=39" wird trotzdem nur "www.hallo.de/lustig.php" ausgegeben :(

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 05.03.2012, 21:49

Also, wenn ich die URLs

"https://localhost/demoshop/demo.php"
"https://localhost/demoshop/demo.php?literatur=2"

aufrufe, werden die weitergeleitet auf

"https://localhost/demoshop/demo"

Dafür lassen sich diese beiden URLs aufrufen:

"https://localhost/demoshop/demo"
"https://localhost/demoshop/demo-literatur-2"

Code: Alles auswählen

RewriteEngine on 
DirectorySlash Off

RewriteCond %&#123;QUERY_STRING&#125; !^var=nurso&#40;.*&#41;$
RewriteRule ^demoshop/demo.php$ /demoshop/demo? &#91;L,R=301&#93;

RewriteCond %&#123;QUERY_STRING&#125; !^var=nurso$
RewriteRule ^demoshop/demo$ /demoshop/demo.php?var=nurso&#91;L&#93;

RewriteCond %&#123;QUERY_STRING&#125; !^var=nurso&#40;.+&#41;$
RewriteRule ^demoshop/demo-&#40;&#91;a-zA-Z_-&#93;+&#41;-&#40;&#91;0-9&#93;+&#41;$ /demoshop/demo.php?var=nurso&$1=$2 &#91;L&#93;
Dein Beispiel, was ich so nicht testen kann ohne eine ähnliche Seite einzurichten, sollte dementsprechend wie folgt aussehen. In der ersten Bedingung zusätzlich (.*) und in der ersten Regel zusätzlich ein ? Fragezeichen. Sollte mit "www.hallo.de/lustig" und "www.hallo.de/lustig-matches-39" funktionieren.

Code: Alles auswählen

RewriteEngine on 
DirectorySlash Off

RewriteCond %&#123;QUERY_STRING&#125; !^var=nurso&#40;.*&#41;$
RewriteRule ^lustig.php$ /lustig? &#91;L,R=301&#93;

RewriteCond %&#123;QUERY_STRING&#125; !^var=nurso$
RewriteRule ^lustig$ /lustig.php?var=nurso &#91;L&#93;

RewriteCond %&#123;QUERY_STRING&#125; !^var=nurso&#40;.+&#41;$
RewriteRule ^lustig-&#40;&#91;a-zA-Z_-&#93;+&#41;-&#40;&#91;0-9&#93;+&#41;$ /lustig.php?var=nurso&do=$1&tid=$2 &#91;L&#93;
Die originalen URLs mit QuryString auch noch umzuleiten, dass hat bisher entweder eine Endlosschleife oder sonstiges Chaos ergeben, weil sich die Regeln gegenseitig verhaspelten.

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 05.03.2012, 22:22

PSVFabian hat geschrieben:Verstehe da nur Bahnhof. Wärst du so nett? :D
Wie ich das bisher mitbekommen habe, wenn im Browser ein existierendes Verzeichnis in der Form "www.hallo.de/verzeichnis" ohne Eingabe eines abschließenden Slash aufgerufen wird, so ladet nicht automatisch eine im Verzeichnis enthaltene index, sondern es wird stattdessen ein fehlerhafter Index des Verzeichnisses aufgelistet. Das kannst Du Dir aber alleine ausprobieren.

https://httpsd.apache.org/docs/2.0/mod/mod_dir.html

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 06.03.2012, 01:25

Endlich! Jetzt geht es in allen Richtungen, mit und ohne QueryString.

Also, die URLs springen im Browser um von

"https://localhost/demoshop/demo.php"
"https://localhost/demoshop/demo.php?literatur=2"
"https://localhost/demoshop/demo.php?literatur=4"

auf

"https://localhost/demoshop/demo"
"https://localhost/demoshop/demo-literatur-2"
"https://localhost/demoshop/demo-literatur-4"

und die Seiten werden geladen, ohne Endlosschleife.

Code: Alles auswählen

RewriteEngine on 
DirectorySlash Off

RewriteCond %&#123;QUERY_STRING&#125; ^$
RewriteRule ^demoshop/demo.php$ /demoshop/demo? &#91;L,R=301&#93;

RewriteCond %&#123;QUERY_STRING&#125; ^literatur=&#40;&#91;0-9&#93;+&#41;$
RewriteRule ^demoshop/demo\.php$ /demoshop/demo-literatur-%1? &#91;L,R=301&#93;

RewriteRule ^demoshop/demo$ /demoshop/demo.php?var=nurso&#91;L&#93;
RewriteRule ^demoshop/demo-&#40;&#91;a-zA-Z_-&#93;+&#41;-&#40;&#91;0-9&#93;+&#41;$ /demoshop/demo.php?var=mitq&$1=$2 &#91;L&#93;
Nun brauchst Du das nur noch für Deine Seiten anzupassen. Noch ein Beispiel mit der Übergabe von zwei Parameterwerten, dieses Beispiel sollte sich ohne größere Probleme anpassen lassen.

Aus den URLs

"https://localhost/testseite.php"
"https://localhost/testseite.php?var1=alte-Besen&var2=31"
"https://localhost/testseite.php?var1=ne ... er&var2=17"

wird

"https://localhost/testseite"
"https://localhost/testseite-alte-Besen-31"
"https://localhost/testseite-neue-Schrubber-17"

Code: Alles auswählen

RewriteEngine on 
DirectorySlash Off

RewriteCond %&#123;QUERY_STRING&#125; ^$
RewriteRule ^testseite.php$ /testseite? &#91;L,R=301&#93;

RewriteCond %&#123;QUERY_STRING&#125; ^var1=&#40;&#91;a-zA-Z_-&#93;+&#41;&var2=&#40;&#91;0-9&#93;+&#41;$
RewriteRule ^testseite\.php$ /testseite-%1-%2? &#91;L,R=301&#93;

RewriteRule ^testseite$ /testseite.php?var=nurso&#91;L&#93;
RewriteRule ^testseite-&#40;&#91;a-zA-Z_-&#93;+&#41;-&#40;&#91;0-9&#93;+&#41;$ /testseite.php?var=mitq&var1=$1&var2=$2 &#91;L&#93;

PSVFabian
PostRank 2
PostRank 2
Beiträge: 37
Registriert: 06.02.2012, 08:04

Beitrag von PSVFabian » 06.03.2012, 17:33

Öhm ne, das ist genau das selbe wie vorher. Man wird jetzt immer auf testseite.php weitergeleitet (außer bei /testseite).

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 06.03.2012, 18:28

Wenn Du in Deinen URLs die Parameter do und tid verwendest, die Regeln und die Bedingungen richtig angepasst hast,

Code: Alles auswählen

RewriteCond %&#123;QUERY_STRING&#125; ^do=&#40;&#91;a-zA-Z_-&#93;+&#41;&tid=&#40;&#91;0-9&#93;+&#41;$
RewriteRule ^testseite\.php$ /testseite-%1-%2? &#91;L,R=301&#93;

# und unten  ...var=mitq&do=$1&tid=$2
dann wird bei Aufruf einer URL wie testseite.php?do=matches&tid=39 die nicht richtig umgeleitet?

Dann verwendest Du noch weitere Parameter oder übergibst irgendetwas, wodurch das Muster von der Bedingung nicht greift. Da kann ich Dir aber nicht mehr helfen, da musst Du schon allein das Muster in der Bedingung mit Deinem verwendeten Parametern und Werten vergleichen.

Code: Alles auswählen

^Gesamtes Muster$  

Bestandteile des Musters&#58;

^Parameter=&#40;Muster für Wert1&#41;&Parameter=&#40;Muster für Wert2&#41;$
%1 entspricht Muster für Wert1 usw. wenn die Übergabe von einer Zeile zu einer nachfolgenden Zeile erfolgt, innerhalb einer Zeile $1 usw. usf..
Die Bedingungen und Regeln funktionieren, wobei ein Forum nur Hilfe zur Selbsthilfe ist.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag