Suchmaschinenoptimierung SEO
Suchmaschinenoptimierung SEO
Wir arbeiten in webEdition oft mit Objekten. Funktioniert alles prima.
Allerdings trifft man immer wieder auf Probleme mit Navigationen, suchmaschinenfreundlichen URLs usw.
Konkret zu einem Beispiel:
Ein Kunde legt seine Produkte einzeln in Objekten an. Wir lesen die Objekte (Produkte) über eine listview in der Seite "giballeobjekteaus.php" aus. Per Link verweisen wir auf die Seite "objektdetailseite.php" und übergeben die Objekt-ID (objektdetailseite.php?ObjectID=1). In der Detailseite requesten wir die ID und geben alle Informationen aus.
Wie bekommt man jetzt eine "schöne" URL (z. B. nicht objektdetailseite.php?ObjectID=1 sondern vielleicht produktname.php)?
Bleibt in diesem Falle nur "mod_rewrite"? Wenn ja, wie lässt sich die URL umwandeln?
Wie lässt sich so etwas sonst realisieren?
Allerdings trifft man immer wieder auf Probleme mit Navigationen, suchmaschinenfreundlichen URLs usw.
Konkret zu einem Beispiel:
Ein Kunde legt seine Produkte einzeln in Objekten an. Wir lesen die Objekte (Produkte) über eine listview in der Seite "giballeobjekteaus.php" aus. Per Link verweisen wir auf die Seite "objektdetailseite.php" und übergeben die Objekt-ID (objektdetailseite.php?ObjectID=1). In der Detailseite requesten wir die ID und geben alle Informationen aus.
Wie bekommt man jetzt eine "schöne" URL (z. B. nicht objektdetailseite.php?ObjectID=1 sondern vielleicht produktname.php)?
Bleibt in diesem Falle nur "mod_rewrite"? Wenn ja, wie lässt sich die URL umwandeln?
Wie lässt sich so etwas sonst realisieren?
Ja, da bleibt leider nur mod_rewrite, denn webEdition bietet dahingehend keine Funktionen.
Ich habe da auch schon mal drüber nachgedacht. Theoretisch müsste es funktionieren wenn man global alle Links die 'we_objectID' enthalten per preg_replace_callback durch eine Funktion jagt. In der Funktion muss man dann den Titel des Dokuments aus der DB ziehen und den gewünschten Dateinamen erzeugen. z.B. Titel_des_Dokuments{3476}.html
Die Klammern lassen sich nun leicht per mod_rewrite erfassen und umschreiben.
Evtl. muss man sich noch etwas bzgl. der Detailseite ausdenken, damit man die Highlightregeln noch anständig einsetzen kann.
Ich habe da auch schon mal drüber nachgedacht. Theoretisch müsste es funktionieren wenn man global alle Links die 'we_objectID' enthalten per preg_replace_callback durch eine Funktion jagt. In der Funktion muss man dann den Titel des Dokuments aus der DB ziehen und den gewünschten Dateinamen erzeugen. z.B. Titel_des_Dokuments{3476}.html
Die Klammern lassen sich nun leicht per mod_rewrite erfassen und umschreiben.
Evtl. muss man sich noch etwas bzgl. der Detailseite ausdenken, damit man die Highlightregeln noch anständig einsetzen kann.
Das würde ich so versuchen:
Titel_des_Dokuments{3476:2}.html
Wobei die 2 dem Namen der Detailseite entspricht. Ich würde hier eher eine Zahl verwenden um die Suchbegriffe nicht zu verwässern. Ist bei der Definition der Regeln zwar unübersichtlicher, aber was tut man nicht alles für ein gutes Ranking.
Alle Detailseiten würde ich in einen extra Ordner legen, dann muss man keinen Pfad übergeben.
Obiger Link leitet dann auf /detail/2.php?we_objectID=4376
Edit: Fällt mir gerade ein. Man darf dann natürlich nicht mehr mit we:printVersion arbeiten, aber das empfiehlt sich ja sowieso.
Titel_des_Dokuments{3476:2}.html
Wobei die 2 dem Namen der Detailseite entspricht. Ich würde hier eher eine Zahl verwenden um die Suchbegriffe nicht zu verwässern. Ist bei der Definition der Regeln zwar unübersichtlicher, aber was tut man nicht alles für ein gutes Ranking.
Alle Detailseiten würde ich in einen extra Ordner legen, dann muss man keinen Pfad übergeben.
Obiger Link leitet dann auf /detail/2.php?we_objectID=4376
Edit: Fällt mir gerade ein. Man darf dann natürlich nicht mehr mit we:printVersion arbeiten, aber das empfiehlt sich ja sowieso.
-
- Senior Member
- Beiträge: 272
- Registriert: Mi 11. Jun 2003, 16:55
- Wohnort: Bayreuth
- Kontaktdaten:
Ich baue die Links auf die Objekte mit PHP in WE wie folgt auf:
http://www.psfd.de/de/datenbank_mitmach ... llbau-GmbH
Object ist #60, der String danach ist "sprechend" und aus einem Datenfeld des Objekts erzeugt. Diese URL kann dann leicht mit mod_rewrite geparst werden.
http://www.psfd.de/de/datenbank_mitmach ... llbau-GmbH
Object ist #60, der String danach ist "sprechend" und aus einem Datenfeld des Objekts erzeugt. Diese URL kann dann leicht mit mod_rewrite geparst werden.
Ich hab das mal gerade gemacht und tut seinen Dienst ganz ordentlich.
Am Anfang vom Master-Template:
Am Ende vom Master-Template:
Und die dazugehörige .htaccess
Die Umwandlung ist nun ein wenig anders als meine vorige Idee. Der Link sieht nun so aus.
Dabei ist
Am Anfang vom Master-Template:
Code: Alles auswählen
<?
ob_start();
function niceurl($objectID,$original_page) {
GLOBAL $DB_WE;
return '"/'.$objectID.'/'.$original_page.f('SELECT Path FROM '.OBJECT_FILES_TABLE.' WHERE ID='.$objectID,"Path",$DB_WE).'"';
}
?>
Code: Alles auswählen
<?
$wholeSite=ob_get_contents();
ob_end_clean();
if($GLOBALS['we_editmode'] != true) {
echo preg_replace(
array(
'#"[^"]*?/([^"/]+).(?:php|htm|html)?we_objectID=(d+)[^"]*?"#e'
),
array(
"niceurl('\2','\1')"
),
$wholeSite
);
}
else
echo $wholeSite;
?>
Code: Alles auswählen
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?([0-9]+)/([0-9]+)/ /detail/$2.php?we_objectID=$1 [L]
Code: Alles auswählen
/156/11/News/Gasprom_reduziert_Gaslieferungen_an_Ukraine_drastisch
- 156 die Objekt-ID
- 11 der Dateiname der Detail-Seite, also wie oben beschrieben /detail/11.php
Das erste Projekt mit der hier beschriebenen Technik ist heute online gegangen. Zu sehen unter http://tinyurl.com/b36q4a
This looks promising! However, I can't get it to work. The page is not found.deemes;50422 hat geschrieben:Ich hab das mal gerade gemacht und tut seinen Dienst ganz ordentlich.
Am Anfang vom Master-Template:Am Ende vom Master-Template:Code: Alles auswählen
<? ob_start(); function niceurl($objectID,$original_page) { GLOBAL $DB_WE; return '"/'.$objectID.'/'.$original_page.f('SELECT Path FROM '.OBJECT_FILES_TABLE.' WHERE ID='.$objectID,"Path",$DB_WE).'"'; } ?>
Und die dazugehörige .htaccessCode: Alles auswählen
<? $wholeSite=ob_get_contents(); ob_end_clean(); if($GLOBALS['we_editmode'] != true) { echo preg_replace( array( '#"[^"]*?/([^"/]+).(?:php|htm|html)?we_objectID=(d+)[^"]*?"#e' ), array( "niceurl('\2','\1')" ), $wholeSite ); } else echo $wholeSite; ?>
Die Umwandlung ist nun ein wenig anders als meine vorige Idee. Der Link sieht nun so aus.Code: Alles auswählen
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^/?([0-9]+)/([0-9]+)/ /detail/$2.php?we_objectID=$1 [L]
Dabei istCode: Alles auswählen
/156/11/News/Gasprom_reduziert_Gaslieferungen_an_Ukraine_drastisch
Der Rest entspricht dem vollen Pfad/Namen des Objektes. Also ist News der Name der Klasse und der rest der Name des Objekts.
- 156 die Objekt-ID
- 11 der Dateiname der Detail-Seite, also wie oben beschrieben /detail/11.php
(http://www.museumflehite.nl/homepage.php > hover over an item and click 'meer info')
Hi Ivo,
the rewrite_rule expects the name of the detail page to be a number. Try to rename your detail page from agenda_item.php to 1.php (you could use the ID of the file)
I designed it that way, so the name of the detail page doesn't weaken the keywords/title of the page.
You have to place all detail pages in the folder "/detail" as well.
Of cause you're welcome to customize it yourself. It's just the design that fit my needs.
Kind regards,
Daniel
the rewrite_rule expects the name of the detail page to be a number. Try to rename your detail page from agenda_item.php to 1.php (you could use the ID of the file)
I designed it that way, so the name of the detail page doesn't weaken the keywords/title of the page.
You have to place all detail pages in the folder "/detail" as well.
Of cause you're welcome to customize it yourself. It's just the design that fit my needs.
Kind regards,
Daniel
Thanks for the quick reply! It's working now. I've changed it a bit to fit my needs. I still don't understand it compleetly.
The first number seems to be the id of the object.
(http://www.museumflehite.nl/6/detail/te ... nstelling6 > 6 is the ID of the object). Can I change remove this or change it in a name?
The first number seems to be the id of the object.
(http://www.museumflehite.nl/6/detail/te ... nstelling6 > 6 is the ID of the object). Can I change remove this or change it in a name?
Too baddeemes;51421 hat geschrieben:No, that shouldn't be possible unless you code yourself a mechanism to display objects. webEdition expects the parameter we_objectID to be an integer value. My code only translates one synthax to another, but it can't change the way webEdition works.
Can I change it so that it is the last item of the url?
Like
http://www.museumflehite.nl/agenda_item ... stelling/5
Instead of
http://www.museumflehite.nl/5/agenda_it ... onstelling
Thanks for your help btw. I'm learning here!
thanks for that.deemes;51426 hat geschrieben:Yeah, that's possible. The path is genereted in function niceurl. Move the variables $objectID and $original_page wherever you like.
As well you need to modify the rewrite_rule. Something like this should make it:
([0-9]+)/([0-9]+)$
Another newbie question: what if the url looks like:
http://website.com/object_detail.php?we_objectID=215
And has to look like
http://website.com/item=itemtitle
How would the code look. I can't figure out how the combinations work...
Thanks in advance
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast