ConPresso Community

Fragen, Antworten, Diskussionen rund um das Content Management System ConPresso

 
url rewrite mit .htaccess?

 
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Implementierung/Anpassung ConPresso 4
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
dutch
ConPresso-Checker


Anmeldungsdatum: 04.07.2007
Beiträge: 419

BeitragVerfasst am: 22.01.2016 11:27    Titel: url rewrite mit .htaccess? Antworten mit Zitat

Hallo zusammen,

ich bekomme immer wieder die Frage von Kunden nach SEO freundlichen URLs.

Aus z.B.
Code:
http://meinseite.de/cpo/verzeichnis/index.php?rubric=Rubrikname


soll dann eben das werden:

Code:
http://meinseite.de/verzeichnis/rubrikname


Ich habe inzwischen einige .htaccess scripts ausprobiert, bekomme das aber nicht so richtig hin.

Hat jemand vielleicht schon ein für CPO erprobtes script?

Vielen Dank!

Gruß,
dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6891

BeitragVerfasst am: 22.01.2016 11:57    Titel: Antworten mit Zitat

Ein grundsätzlicher Fehler ist ja schon mal überhaupt ein Verzeichnis "cpo" zu erstellen. Am besten ConPresso in root-Verzeichnis der Domain bzw. die Domain direkt auf ConPresso-Verzeichnis zeigen lassen.

Ansonsten sollte
Code:
RewriteEngine on
RewriteRule ^(.*)/(.*)$ cpo/$1/index.php?rubric=$2 [R=301]


doch zum gewünschten Ergebnis führen.

Das [R=301] kannst Du nach dem Testen wegnehmen, damit die Suchmaschinen nicht die Umleitung sehen, sonst wäre es ja kein SEO.

Dann sind aber Detailseiten und Archiv noch außen vor...
... und Module, Suche, etc.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6891

BeitragVerfasst am: 22.01.2016 12:07    Titel: Antworten mit Zitat

Eine URL wie
http://meinseite.de/verzeichnis/index.php?rubric=Rubrikname
ist übrigens bereits suchmaschinenfreundlich, das Gegenteil behaupten nur die üblichen SEO-Nervensägen, die einem sagen wollen, wie schlecht die Seite doch ist... selbst aber bei Google auf Seite 10 stehen während die bemängelte Seite auf Seite 1 "nur" auf Platz 5 steht...

Viel suchmaschinenfeindlicher sind nicht aktuelle Seiten, die erkennbar kaum Änderungen erfahren.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dutch
ConPresso-Checker


Anmeldungsdatum: 04.07.2007
Beiträge: 419

BeitragVerfasst am: 22.01.2016 12:17    Titel: Antworten mit Zitat

Hallo Markus,

danke für das script, werde ich gleich einmal testen.

Dass das Verzeichnis cpo nicht ideal ist, ist schon klar, und probiere ich auch wenn möglich zu vermeiden. Ich habe das eher als worst case in die url mit reingeschrieben, da ich bei einigen Kunden mit recht chaotischen Serverzuständen kämpfe. Dann ist es mir doch lieber, das System in einem separaten Ordner unterzubringen.

Was die Suchmaschinenfreundlichkeit angeht, da glaube ich auch, dass die Leute oft SEO freundlich mit human readable verwechseln.
Wie auch immer, wenn sie SEO sagen und human readable meinen, dann habe ich jetzt wenigsten was, das ich ihnen anbieten kann Wink

Danke sehr!

Gruß,
dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dutch
ConPresso-Checker


Anmeldungsdatum: 04.07.2007
Beiträge: 419

BeitragVerfasst am: 22.01.2016 12:22    Titel: Antworten mit Zitat

Habe es eben getestet, aber dabei scheint zu dem bestehenden /cms nochmal eine /cms in den Pfad eingebaut zu werden, anstatt das bestehende rauszuschmeißen... Shocked
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6891

BeitragVerfasst am: 22.01.2016 12:27    Titel: Antworten mit Zitat

Wo liegt die htaccess denn? Im Root oder im CPO-Verzeichnis?
_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dutch
ConPresso-Checker


Anmeldungsdatum: 04.07.2007
Beiträge: 419

BeitragVerfasst am: 22.01.2016 12:30    Titel: Antworten mit Zitat

Ich hatte sie erst in root und als das nicht funzte auch einmal in cpo, aber bei beiden Varianten wurde eine Fehlerseite ausgegeben mit einem Pfad, der u.a. /cms/cms/... enthielt.

EDIT:
Damit keine Missverständnisse entstehen: Ich habe das cpo in deinem Script in cms geändert, da eben das Verzeichnis im vorliegenden Fall so heißt...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6891

BeitragVerfasst am: 22.01.2016 13:07    Titel: Antworten mit Zitat

Kommt wohl immer auf den Server drauf an. Probiere doch mal
Code:
RewriteEngine on
RewriteRule ^(.*)/(.*)$ http://meinseite.de/cms/$1/index.php?rubric=$2 [R=301]


Wobei klar sein sollte, dass es darum geht das "cms" da einzubauen!

Es soll ja eine URL in der Form
http://meinseite.de/verzeichnis/rubrikname
eingegeben werden und daraus
http://meinseite.de/cms/verzeichnis/index.php?rubric=Rubrikname
werden, damit CPO weiß was es zu tun gibt!

Auf http://meinseite.de/verzeichnis/rubrikname kann CPO ja gar nicht reagieren!

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dutch
ConPresso-Checker


Anmeldungsdatum: 04.07.2007
Beiträge: 419

BeitragVerfasst am: 22.01.2016 13:55    Titel: Antworten mit Zitat

Ja, ist schon klar.
Aber was macht man, wenn jemand schon mit der richtigen (kompletten) URL aufruft?
Dann wird das cms, wie gesagt, nochmal eingebaut und verhaut damit die URL.

Leider baut das Script bei mir kein cms ein, wenn die verkürzte URL aufgerufen wird...
Weder in der ersten noch in der zweiten Variante.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 6891

BeitragVerfasst am: 22.01.2016 14:18    Titel: Antworten mit Zitat

Falls Du das direkt mit dem eigenen Browser probiert wirst Du ggf. durch dessen DNS-Speicher überlistet.

Probiere Deine URLs besser hier aus: http://web-sniffer.net/

Wenn nun die echte URL benutzt wird, dann müssen da eben noch Bedingungen reingebaut werden.
Aber das ist eben das Problem, dass es ja nicht nur einen URL-Aufbau gibt sondern viele, und die müssen alle berücksichtigt werden.

Ich habe da auch kein Rezept, habe nur in einem Auftritt einzelne URLs umgeleitet.
Mit genügend Bedingungen und Regeln kriegt man das aber hin, bringen tut es nur gar nichts.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dutch
ConPresso-Checker


Anmeldungsdatum: 04.07.2007
Beiträge: 419

BeitragVerfasst am: 22.01.2016 14:22    Titel: Antworten mit Zitat

Dann ist es vielleicht doch wieder an der Zeit, lieber auf Überzeugungsarbeit beim Kunden zu setzen, als auf sinnlose Arbeit an der URL Laughing Laughing

Aber auf jedenfall danke für die Mühe. Jetzt weiß ich auf jeden Fall wieder etwas mehr!

Gruß,
dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 985
Wohnort: Wuppertal

BeitragVerfasst am: 27.01.2016 21:16    Titel: Antworten mit Zitat

Ich lasse schon seit Jahren die URLs umschreiben von

http://meinseite.de/cms/index.php?rubric=Rubrikname

nach

http://meinseite.de/cms/Rubrikname.html

klappt einwandfrei.

_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
dutch
ConPresso-Checker


Anmeldungsdatum: 04.07.2007
Beiträge: 419

BeitragVerfasst am: 28.01.2016 08:40    Titel: Antworten mit Zitat

Hallo Mr. Magpie,

klingt gut! Wie sieht denn deine .htaccess aus?
Der SEO Fachmann meines Kunden ist weiterhin überzeugt, dass eine URL ohne Parameter besser ist für Suchmaschinen als eine mit, auch wenn ich da MarkusR recht gebe, dass das eigentlich irrelevant sein sollte.

Aber human readable ist ja auch schon ein gewisser Vorteil.

Gruß,
dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 985
Wohnort: Wuppertal

BeitragVerfasst am: 18.02.2016 20:40    Titel: Antworten mit Zitat

Folgendermaßen sieht der relevante Teil meiner .htaccess aus, sodass Rubrikadressen immer die Form http://www.domain.tld/Rubrikverzeichnis/Rubrikname.html haben:

Code:

RewriteEngine on

# Rewriting nicht für Modulverzeichnisse
RewriteCond %{REQUEST_URI} !^/mod_
# Hier die "legalen" Rubrik-Verzeichnisse auflisten, um Soft-404-Fehler zu vermeiden (ODER-verküpft, wenn mehrere!)
RewriteCond %{REQUEST_URI} ^/Kontakt [OR]
RewriteCond %{REQUEST_URI} ^/cms
# Rewriting nicht für Unterverzeichnisse der Rubrik-Verzeichnisse
RewriteCond %{REQUEST_URI} !^/[^_].+/.*/
# Beachte: Rewriting nicht für alle Verzeichnisse, die mit Unterstrich beginnen - wird _rubric verwendet, dann eckige Klammer in obiger RewriteCond und der RewriteRule entfernen
RewriteRule  ^([^_].+)/(.+)\.html$ /$1/index.php?rubric=$2


RewriteCond %{REQUEST_URI} !^/mod_
# mod_form-Verzeichnis "Kontakt" muss hier mit angegeben werden, damit Captcha sichtbar
RewriteCond %{REQUEST_URI} !^/Kontakt
RewriteCond %{REQUEST_URI} ^/[^_].+/.*/
RewriteRule ^(.*)$ http://www.domain.tld/404.php [R=404]


Um "Duplicate Content" zu vermeiden, muss dafür gesorgt werden, dass ConPresso selbst und die Module nur Rubriklinks in der Form http://www.domain.tld/Rubrikverzeichnis/Rubrikname.html erzeugen.
Hier ein paar Beispiele für Änderungen, die ich bei CPO 4.0.x und Modulen einsetze:

Code:

..\_editor\editor.php
=====================

// ********** Links auf Rubriken mit mod_rewrite ********** Teil 1/1 ***** Anfang *****
/* Originalzeile
htmlspecialchars(BASE_ABS.$db->v('directory').'/index.php?rubric='.urlencode($db->v('name'))),
   geändert zu */
htmlspecialchars(BASE_ABS.$db->v('directory').'/'.urlencode($db->v('name')).'.html', ENT_COMPAT, 'ISO-8859-15'),
// ********** Links auf Rubriken mit mod_rewrite ********** Teil 1/1 *****  Ende  *****



..\_include\form_fields.inc.php
===============================

// ********** Links auf Rubriken mit mod_rewrite ********** Teil 1/1 ***** Anfang *****
/* Originalzeile
htmlspecialchars(BASE_ABS.$db->v('directory').'/index.php?rubric='.urlencode($db->v('name'))),
   geändert zu */
htmlspecialchars(BASE_ABS.$db->v('directory').'/'.urlencode($db->v('name')).'.html', ENT_COMPAT, 'ISO-8859-15'),
// ********** Links auf Rubriken mit mod_rewrite ********** Teil 1/1 *****  Ende  *****



..\_include\parser_r_value.inc.php
==================================

// ********** Rubrik-Link für mod_rewrite erzeugen  ********** Teil 1/1 ***** Anfang *****
/* Originalzeilen:
    $_t = sprintf('<a href="../%s/index.php?rubric=%s">%s</a>',
        htmlspecialchars($content[$key]['rubricdirectory']),
        urlencode($content[$key]['rubricid']),
        htmlspecialchars($content[$key]['rubrictitle'])
    );
   ersetzt durch: */
    $_t = sprintf('<a href="../%s/%s.html">%s</a>',
        htmlspecialchars($content[$key]['rubricdirectory'], ENT_COMPAT, 'ISO-8859-15'),
        urlencode($content[$key]['rubricname']),
        htmlspecialchars($content[$key]['rubricname'], ENT_COMPAT, 'ISO-8859-15')
    );
// ********** Rubrik-Link für mod_rewrite erzeugen  ********** Teil 1/1 *****  Ende  *****



..\_include\printnavigation.inc.php
===================================

// ********** Rubrik-Link für mod_rewrite erzeugen  ********** Teil 1/1 ***** Anfang *****
/* Originalzeile:
            $link = BASE_ABS.$v['rubric']['directory'].'/index.php?rubric='.urlencode($v['rubric']['name']);
   ersetzt durch: */
            $link = BASE_ABS.$v['rubric']['directory'].'/'.urlencode($v['rubric']['name'].'.html');
// ********** Rubrik-Link für mod_rewrite erzeugen  ********** Teil 1/1 *****  Ende  *****



..\mod_search\includes\parser.inc.php
=====================================

// ********** Modifikation für SEO-gemäße Suchergebnis-Links ********** Teil 1/1 ***** Anfang *****
/* Die Zeile:
            $link = BASE_REL . $rubrics[$v['rubric_id']]['directory'] . '/index.php?rubric=' . urlencode($rubrics[$v['rubric_id']]['name']) . '&amp;nr='.(int)$v['nr'].'#'.(int)$v['nr'];
   ersetzt durch: */
            $link = htmlspecialchars(BASE_REL . $rubrics[$v['rubric_id']]['directory'] . '/' . urlencode($rubrics[$v['rubric_id']]['name']) . '.html', ENT_COMPAT, 'ISO-8859-15') . '#'.(int)$v['nr'];
// ********** Modifikation für SEO-gemäße Suchergebnis-Links ********** Teil 1/1 *****  Ende  *****

   
   
..\mod_breadcrumbnavi\_include\function.php
===========================================

// ********** Rubrik-Link für mod_rewrite erzeugen  ********** Teil 1/1 ***** Anfang *****
/* Originalzeile:
            $link = BASE_URL.$v['rubric']['directory'].'/index.php?rubric='.urlencode($v['rubric']['name']);
   ersetzt durch: */
            $link = BASE_URL.$v['rubric']['directory'].'/'.urlencode($v['rubric']['name'].'.html');
// ********** Rubrik-Link für mod_rewrite erzeugen  ********** Teil 1/1 *****  Ende  *****

   
   
..\mod_sitemap\functions.inc.php
================================

// PATH_INFO disabled
if (isset($v['rubric']['directory']) && !$GLOBALS['cpoSystem']['PATH_INFO']) {
// ********** Modifikation für SEO-gemäße Links ********** Teil 1/1 ***** Anfang *****
/* Die Zeile:
       $link = BASE_URL.$v['rubric']['directory'].'/index.php?rubric='.urlencode($v['rubric']['name']);
   ersetzt durch: */
       $link = BASE_URL.$v['rubric']['directory'].'/'.urlencode($v['rubric']['name'].'.html');
// ********** Modifikation für SEO-gemäße Links ********** Teil 1/1 *****  Ende  *****
}

_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen

 
Für dieses Posting bedanken sich die folgenden User: dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mr. Magpie
ConPresso-Experte


Anmeldungsdatum: 01.01.1970
Beiträge: 985
Wohnort: Wuppertal

BeitragVerfasst am: 14.03.2016 23:28    Titel: Antworten mit Zitat

Noch was vergessen: Die index.php im Hauptverzeichnis von ConPresso sieht im laufenden Betrieb bei mir folgendermaßen aus, damit auch hier Google und Konsorten die Human Readable-Adresse bekommen:

Code:
<?php
define('CPO', true);
require_once('_include/common.inc.php');
header("HTTP/1.1 301 Moved Permanently");
/* if (SID!='')
    header('Location: '.BASE_ABS.$cpoSystem['homepage'].(stristr(BASE_ABS.$cpoSystem['homepage'], '?')===FALSE ? '?'.SID : '&'.SID));
else
    header('Location: '.BASE_ABS.$cpoSystem['homepage']);
*/
header("Location: http://www.domain.tld/Rubrikverzeichnis/Home.html");
?>

_________________
Günther Ludwig, amazingBytes webdesign      

Referenzen finden Sie hier: amazingBytes webdesign - Referenzen

 
Für dieses Posting bedanken sich die folgenden User: dutch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> Implementierung/Anpassung ConPresso 4 Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen