tags mit RewriteRule á la wordpress - htaccess Problem

Gesperrt
dosenbrot
Beiträge: 102
Registriert: Fr 27. Aug 2004, 15:37
Kontaktdaten:

tags mit RewriteRule á la wordpress - htaccess Problem

Beitrag von dosenbrot »

Hallo zusammen,

vielleicht kann mir hier jemand bei meinem aktuellen Problem weiterhelfen. Ich nutze für das Projekt die 4.8.11 Version mit AMR. Nun habe ich schon erfolgreich so eine Art Tagcloud erstellt und eingebunden, aber die Links werden derzeit in der Form "suchergebnisse.html?searchterm=suchbegriff" generiert. Das funktioniert generell wunderbar, für Google und Co wäre es optimaler, wenn ich es in der Form www.domain.tld/tags/suchbegriff/ á la wordpress gestalten könnte. Daran verzweifel ich allerdings.

Meine verschiedenen erfolglosen Lösungsansätze bisher in der .htaccess:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} ^searchterm=(.*)$
RewriteRule ^suchergebnisse\.html$ /tags/$1/? [L,R=301] 

RewriteCond %{QUERY_STRING} ^&?searchterm=$
RewriteRule ^front_content.php.*$ /tags/$1/? [L,R=301] 

RewriteRule ^tags/(.*)$ suchergebnisse.html?searchterm=$1 [R=301,NC,L,N]
RewriteRule ^suchergebnisse\.html?searchterm=(.*)$ /tags/$1 [R=301,NC,L,N]

RewriteCond %{QUERY_STRING} ^searchterm=([0-9]+)$
RewriteRule ^suchergebnisse\.html$ /tags/%1? [L,R=301] 
Bestimmt mache ich da irgendwo einen kleinen dummen Fehler an irgendeiner Stelle. :cry:
Ich danke für weitere Ideen!

Beste Grüße
dosenbrot
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: tags mit RewriteRule á la wordpress - htaccess Problem

Beitrag von idea-tec »

Du generierst die Links doch im Modul? Wieso willst du diese dann per htaccess umschreiben?
Im Modul hängst du einfach die Systemvariable: $cfgClient['<Mandanten-ID>']['path']['htmlpath'] vorne dran, und gut isses

Systemvariable und mehr ist hier nachzulesen hier: http://www.contenido-wiki.org/wiki/inde ... mvariablen
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: tags mit RewriteRule á la wordpress - htaccess Problem

Beitrag von xmurrix »

Hallo dosenbrot,

im Modul generierst du, wie idea-tech beschrieben hat, die URLs, nach dem Format "/tags/suchbegriff/".
Beispiel:

Code: Alles auswählen

$url = '/tags/foobar/';
echo '<a href="' . $url . '">foobar</a>';
In der .htaccess musst du nun eine Regel einbauen, die ankommende Requests nach dem Muster von oben "abfängt" und an einen Contenidoartikel "umleitet".
Das könnte z. B. folgende Regel sein:

Code: Alles auswählen

# alle ankommenden anfragen mit /tags/{wert} an front_content.php?idart=123&tags={wert} umschreiben
RewriteRule ^tags/(.*)$ front_content.php?idart=123&tags=$1 [NC,QSA,L]
Diese Regel sollte vor der Regel definiert werden, die alle Anfragen an die front_content.php umschreibt.


So ungefähr sollte funktionieren.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
dosenbrot
Beiträge: 102
Registriert: Fr 27. Aug 2004, 15:37
Kontaktdaten:

Re: tags mit RewriteRule á la wordpress - htaccess Problem

Beitrag von dosenbrot »

Hallo ihr beiden,

vielen Dank für eure Antworten, aber entweder blockiert das Sturmtief Daisy meine Gedankengänge oder die Woche war zu anstregend...

Ich habe wie xmurrix es geschrieben in der htaccess ganz oben eingefügt, um die URL /tag/suchbegriff/ :

Code: Alles auswählen

RewriteEngine on
RewriteBase /
# alle ankommenden anfragen mit /tag/{wert} an front_content.php?idart=12&searchterm={wert} umschreiben
RewriteRule ^tag/(.*)/$ front_content.php?idart=12&searchterm=$1 [NC,QSA,L]
idart=12 ist meine Suchergebnisseite mit dem Standard-Suchmoduloutput (/suchergebnisse.html)

Dann habe ich in dem Tagcload-Modul folgendes geändert, um die URL /tag/suchbegriff/ zu erreichen:

Code: Alles auswählen

       $keyword = ucfirst($keyword);
        if ($online_chk!=0){
            $content[] = "<a href=\"/tag/$kurl/\" style=\"font-size:{$size}px\">$keyword</a>\n";
            #echo "<a href=\"front_content.php?idart=105&suchtext=$kurl&showarticle=11\" class=\"tag{$size}\">$keyword</a>&nbsp;&nbsp;\n";
       }
Das ganze Tagcloud-Modul habe ich hier aus dem Forum und sieht so aus:

Code: Alles auswählen

    <?php
    /***********************************************
    * CONTENIDO MODUL -  Output
    *
    * Modulname   :     TagCloud
    * Copyright   :     Soeren Helms
    * Created     :     20080628
    + Modified   :   Mathias Rauh
    ************************************************/

    $dbConnect = new DB_Contenido;
    $dbConnect_chk = new DB_Contenido;

    $ausschluss = "('information')";

    $query = "SELECT keyword, auto, length(auto) as size
                FROM ".$cfg['sql']['sqlprefix']."_keywords
                WHERE keyword NOT IN ".$ausschluss."
                AND keyword REGEXP '[a-zA-Z]+$'
                AND length(keyword) > 4
                ORDER BY `size` DESC
                LIMIT 30";
    #echo $query;

    $dbConnect->query($query);

    if (!isset($tpl) || !is_object($tpl)) {
        $tpl = new Template();
    }
    $template = "boxThemen.html";
    $tpl->reset();

    while ($dbConnect->next_record()) {
       #$size = $dbConnect->f("size")."\n";
       $auto = $dbConnect->f("auto")."\n";
       $keyword = $dbConnect->f("keyword");
       $kurl = urlencode("$keyword");
       
    #===========================================================
        $array2=explode('&', $auto);
        #print_r($array2);
        $online_chk=0;
        $amount=0;
        foreach($array2 as $val) {
            #echo "VAL: ".$val."<br>";
            $pos=strpos($val,'=');
            $key=substr($val,0,$pos);
            $klammer = strpos($val,'(');
            $amount = $amount + substr($val,$pos+1,$klammer-($pos+1));
            if ($key != "") {
               $query_chk = "SELECT online from con_art_lang where idart=".$key;
               #echo "statement: ".$query_chk."<br>";
               $dbConnect_chk->query($query_chk);
               while ($dbConnect_chk->next_record()) {
                   $online = $dbConnect_chk->f("online");
                   #echo "online-".$online_chk."-<br>";
                   if ($online==1) $online_chk=$online_chk+1;
               }           
               #echo "key-".$key."-<br>";
               #echo "online-".$online_chk."-<br>";
            }
        }
        $size = $amount/5;
        if ($size > 15) $size = 15;
        if ($size < 10) $size = 10;
        #echo "<br>online: ".$online_chk;
        #echo "<br>TEST";
    #==================================================================   
       
       $keyword = ucfirst($keyword);
        if ($online_chk!=0){
            $content[] = "<a href=\"/tag/$kurl/\" style=\"font-size:{$size}px\">$keyword</a>\n";
            #echo "<a href=\"front_content.php?idart=12&searchterm=$kurl&showarticle=11\" class=\"tag{$size}\">$keyword</a>&nbsp;&nbsp;\n";
       }
    }
    shuffle($content);
    $content = implode($content, " ");
    $tpl->set('s', 'CONTENT', $content);
    $tpl->set('s', 'HEADLINE', mi18n("Themen im Focus"));
    $tpl->generate('templates/'.$template);
    ?>  
Oder meint ihr noch ein anderes Modul???

Also wenn ich front_content.php?idart=12&searchterm=testsuchbegriff aufrufe, erscheint meine Ergebnisseite.
Ebenfalls funktioniert es über suchergebnisse.html?searchterm=testsuchbegriff

Danke für eure Geduld mit mir. Vielleicht findet ihr ja noch meinen dummen Fehler.
Tausend Dank und beste Grüße
dosenbrot
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: tags mit RewriteRule á la wordpress - htaccess Problem

Beitrag von xmurrix »

Was da nicht funktioniert, hast du nicht geschrieben.

Du hast bei dir die RewriteBase auf "/" gestellt, liegt die .htaccess im Rootverzeichnis oder eine Ebene tiefer im cms/ Ordner? Falls ja, muss die Regel

Code: Alles auswählen

RewriteRule ^tag/(.*)/$ cms/front_content.php?idart=12&searchterm=$1 [NC,QSA,L]
Das ist aber nur Spekulation.

Was passiert denn genau, wenn du die im Modul generierten URLs aufrufst, kriegst du einen 404 er Fehler oder landest du im richtigen Artikel aber der Tag fehlt?

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
dosenbrot
Beiträge: 102
Registriert: Fr 27. Aug 2004, 15:37
Kontaktdaten:

Re: tags mit RewriteRule á la wordpress - htaccess Problem

Beitrag von dosenbrot »

Ich hab das bei mir so eingerichtet, dass die Domain direkt auf den cms-Ordner geschaltet ist, das Backend ist über eine Subdomain aufrufbar, daher liegt die htaccess im cms-Ordner. Dann müsste es doch eigentlich ohne cms/ vor dem front_content sein?

Ich bekomme einen 404 error!
dosenbrot
Beiträge: 102
Registriert: Fr 27. Aug 2004, 15:37
Kontaktdaten:

Re: tags mit RewriteRule á la wordpress - htaccess Problem

Beitrag von dosenbrot »

Also das ist schon verrückt, selbst wenn ich mal testweise für einen festen Tag/Suchbegriff eine RewriteRule einrichte funktioniert es nicht:

Code: Alles auswählen

RewriteRule ^tag/testsuchbegriff/$ front_content.php?idart=12&searchterm=testsuchbegriff [NC,QSA,L]
allerdings kann ich ohne Probleme den Artikel über
domain.tld/front_content.php?idart=12&searchterm=testsuchbegriff
und
domain.tld/suchergebnisse.html?searchterm=testsuchbegriff
aufrufen!
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: tags mit RewriteRule á la wordpress - htaccess Problem

Beitrag von xmurrix »

Wenn das der cms-Ordner das Roorverzeichnis ist, dann ist deine Einstellung in der .htaccess eigentlich in Ordnung gewesen.

Ok, was steht denn in der error.log des Apachen genau drin?, der müsste die Fehlerhafte URL protokollieren...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
dosenbrot
Beiträge: 102
Registriert: Fr 27. Aug 2004, 15:37
Kontaktdaten:

Re: tags mit RewriteRule á la wordpress - htaccess Problem

Beitrag von dosenbrot »

Also weder im apache error_log steht eine Fehlermeldung drin, noch im contenido-errorlog!
Es wird immer auf die Contenido-Errorseite (404.html?error=1) weitergeleitet.
dosenbrot
Beiträge: 102
Registriert: Fr 27. Aug 2004, 15:37
Kontaktdaten:

Re: tags mit RewriteRule á la wordpress - htaccess Problem

Beitrag von dosenbrot »

Halleluja :D

Ich habs zwar nicht exakt so hinbekommen, aber immerhin mit folgendem Eintrag in der htaccess:

Code: Alles auswählen

RewriteRule ^tag-(.*).html front_content.php?idart=12&searchterm=$1&%{QUERY_STRING} [NC]
Fragt mich nicht warum, aber in der Form /tag/suchbegriff/ wollte die rewriterule nicht funktionieren, nun werden die links in der form /tag-suchbegriff.html erzeugt, das ist immerhin deutlich besser als der vorherige lange link mit fragezeichen und searchterm. :D
Also vielen Dank für die Hilfe, Ideen und Unterstützung!!!!!!!!

Nun noch eine letzte Hürde mit Bitte um Unterstützung:

Die Tags würde ich auch gerne wie bei Wordpress in so ziemlich jeden Artikel einfügen anhand der metatag-keywords. Sprich die keywords, welche ich selber in die Artikeleigenschaften als tags eingebe, möchte ich gerne im Artikel unterhalb des eigentlichen Textes sichtbar einfügen und entsprechend mit der Suchfunktion (s.o.) verlinken.

Beispiel:
... text des artikels ... bla bla... textende.
Tags: Auto, blau, Lenkrad

Ich hab da schon einiges zu im Forum gesucht, steige aber nicht so richtig bei contenido durch, um das wie gewünscht zu verwirklichen. Daher danke ich wieder für jeden Tipp bzw. eine Lösung!!! :)
dosenbrot
Beiträge: 102
Registriert: Fr 27. Aug 2004, 15:37
Kontaktdaten:

Re: tags mit RewriteRule á la wordpress - htaccess Problem

Beitrag von dosenbrot »

Alles klar, selbst das konnte ich noch bewältigen! :)

Mithilfe dieses kleinen Moduls (http://forum.contenido.org/viewtopic.ph ... ds#p132149) und ein paar kleinen Anpassungen konnte ich es exakt so umsetzen, wie ich mir das vorgestellt habe. Also quasi identisch wie bei wordpress mit Tagcloud und zusätzlich eigene Tags für jeden Artikel, die wiederum mithilfe der Suchfunktion auf andere Artikel mit diesen Tags verweisen. :-)

Nochmal danke für eure Mithilfe!!!
DerFrank
Beiträge: 72
Registriert: Do 17. Dez 2009, 12:37
Kontaktdaten:

Re: tags mit RewriteRule á la wordpress - htaccess Problem

Beitrag von DerFrank »

Prima. Magst Du das auch posten? Also den Code mit Deinen Anpassungen und der htaccess. ;)
aitsu open source cms framework für contenido bei googlecode...
dosenbrot
Beiträge: 102
Registriert: Fr 27. Aug 2004, 15:37
Kontaktdaten:

Re: tags mit RewriteRule á la wordpress - htaccess Problem

Beitrag von dosenbrot »

Hallo Frank,

alles klar, wie gesagt, das sind alles zusammengesuchte und überwiegend hier schon im Forum veröffentlichte Codeschnipsel oder gar vollständige Module, welche ich nun verwende in der 4.8.11 AMR Version (in der Hoffnung, dass es nach meinem Update auf .12 auch noch geht... ;)).

.htaccess
ganz oben einfügen, Pfade ggf. anpassen, idart anpassen, ggf. Begriff "tag" ändern oder umstellen:

Code: Alles auswählen

# Enable rewrite engine
# ---------------------
RewriteEngine on

# Specify a base URL-path for the rules
# -------------------------------------
RewriteBase /

# alle ankommenden anfragen mit /tag-{wert}.html an front_content.php?idart=XX&searchterm={wert} umschreiben
RewriteRule ^tag-(.*).html front_content.php?idart=XX&searchterm=$1&%{QUERY_STRING} [NC,L]
RewriteRule ^tag-(.*)-seite([0-9]*).html front_content.php?idart=XX&searchterm=$1&page=$2&%{QUERY_STRING} [NC,L]
An die Stelle, wo du die Tags in deinem Artikel einfügen und verlinken möchtest, fügst du diese Modul ein:
http://forum.contenido.org/viewtopic.ph ... ds#p132149
mit folgender Änderung:

Code: Alles auswählen

   echo '<a href="http://www.domain.com/suchergebnisse/suchergebnisse.html?searchterm='.$teile[$i].'">'.$teile[$i].'</a>&nbsp; ';
ändern in:

Code: Alles auswählen

   echo '<a href="http://www.domain.com/tag-'.$teile[$i].'.html">'.$teile[$i].'</a>&nbsp; ';
bzw. wenn du statt "tag" in der htaccess ein anderes Wort nehmen solltest, müsste dieses natürlich eingefügt werden.

Im Grunde ist das alles hier also kein neues Modul, sondern nur ggf. eine kleine Erleichterung für Suchmaschinen der bereits vorhandenen Module. Alles ohne Gewähr. ;) Ein großes Dankeschön an alle, die zuvor schon die tollen Module programmiert, entwickelt und ggf. weiter optimiert haben!

Dazu empfiehlt sich ein Tagcloud-Modul wie oben eingefügtes. Auch dort die URL entsprechend eurer neuen URL-Form ändern.
DerFrank
Beiträge: 72
Registriert: Do 17. Dez 2009, 12:37
Kontaktdaten:

Re: tags mit RewriteRule á la wordpress - htaccess Problem

Beitrag von DerFrank »

Danköööö. Die Community wird's danken. ;)
aitsu open source cms framework für contenido bei googlecode...
Gesperrt