5.13 Suchmaschinenfreundliche URLs
Das Thema „Wie werde ich gefunden?“ wird immer wichtiger. Suchmaschinenfreundliche URLs sehen etwa so aus:
http://example.com/contact
Die Variante, die man Suchmaschinen und Benutzern gegenüber vermeiden sollte, ist ein Verweis auf das Kontaktformular in dieser Art:
http://example.com/?q=node/23&xy=33
Intern werten alle CMS die übergebenen URLs aus und suchen nach Informationen, was zu tun ist (zeige Node 23 an und berücksichtige dabei die Variable mit dem Namen xy und dem Wert 33).
Wenn suchmaschinenfreundliche URLs gewünscht werden, muss irgendjemand diese URLs festlegen. Im Drupal-Core sind für diese Funktion das Path-Modul und der Benutzer zuständig. Das Path-Modul bietet eine Tabelle, in der die Verbindung zwischen der originalen URL und der benutzerfreundlichen Variante abgespeichert wird. Der Benutzer muss nun sagen, wie die URL heißen soll (URL-Alias), und schon ist das Problem gelöst.
Voraussetzungen – weg mit dem /?q=
Je nachdem, in welcher Serverumgebung Sie Drupal installiert haben, kann es sein, dass Ihre URLs so aussehen:
http://localhost/drupal62/?q=/de/node/1
Wenn das so ist, sehen Sie eine gelb hinterlegte Meldung wie in Abbildung 28 unter Verwalten – Einstellungen – Lesbare URLs.

Abbildung 5.25: Problem mit den lesbaren URLs
Sie müssen sich jetzt auf die Suche machen, was an Ihrer Umgebung nicht passt. Meistens ist das Modul mod_rewrite im Apache-Webserver nicht aktiviert. Das Modul hat nichts mit den Modulen in Drupal zu tun. Das Problem kann bei XAMPP Lite ebenso auftauchen wie bei Ihrem Webspace Provider.
Exkurs
Sie aktivieren mod_rewrite in XAMPP Lite in der Datei
[LW]xampplite/apache/conf/httpd.conf
Öffnen Sie die Datei in einem Editor, meine Empfehlung Notepad++16, und suchen Sie in der Datei nach dem Begriff mod_rewrite. Bei mir steht der entsprechende Befehl in Zeile 118:
#LoadModule rewrite_module modules/mod_rewrite.so
Entfernen Sie das Doppelkreuz vor dem Befehl, speichern Sie die Datei und starten den Apache-Webserver neu. Jetzt unterstützt er lesbare URLs.
Nachdem Sie die Ursache des Problems behoben haben, können Sie in Verwalten – Einstellungen – Lesbare URLs die Option aktivieren. Anschließend sieht die Anzeige aus wie in Abbildung 5.26, und das lästige /?=q ist aus der URL verschwunden:

Abbildung 5.26: Lesbare URLs bei korrekter Serverkonfiguration
Suchmaschinenfreundliche URLs für einen Inhalt
Nach der Aktivierung des Moduls Path und der gewünschten Rechtevergabe erscheint im Bearbeitungsmodus eines Inhalts ein zusätzlicher Link mit dem Namen URL-Alias-Einstellungen (Abbildung 5.27).

Abbildung 5.27: Suchmaschinenfreundliche Links
In dem zur Verfügung stehenden Feld können Sie Ihren gewünschten URL-Alias als freien Text eintragen und abspeichern. Ihre Pressemeldung ist dann mit diesem Link aufrufbar.
Verwaltung aller URL-Aliase
Sie können als Administrator alle vergebenen Aliasnamen unter Verwalten – Strukturierung – URL-Aliase verwalten (Abbildung 5.28).

Abbildung 5.28: URL-Alias-Verwaltung
In Drupal 6 können Sie die URL-Aliase filtern, ein Feature, das in Drupal 5 noch nicht existierte und das ich auf größeren Seiten schmerzlich vermisst habe.
Automatische Pfade
Oftmals ist es gut, wenn die Aliase nach bestimmten vordefinierten Regeln automatisch erzeugt werden. Das Modul Pathauto17 bietet die Funktionalität an.
16 http://notepad-plus.sourceforge.net/und auf der Buch CD
- Neuen Kommentar schreiben
- 11076 mal gelesen







andere urls
Hallo,
ich habe gar keine solchen
http://example.com/?q=node/23&xy=33
URLs.
Bei mir sehen sie so
http://www.klausdreyer.de/drupal/node/3
aus.
Wie kommt denn das?
Grüße
klaus dreyer
mod_rewrite
Dann ist bei Deiner Installation mod_rewrite bereits im Apache aktiviert gewesen.
Drupal hat das bei der Installation bemerkt und aktiviert.
In welcher Serverumgebung arbeitest Du (Mamp, xampplite, alles einzeln installiert) ?
mod_rewrite
Hallo,
und was mache ich, wenn laut Provider (Hosteurope, WeBPack M) mod_rewrite nachgewiesenermaßen aktiviert ist und sich "Lesbare URLs" trotzdem nicht aktivieren läßt?
.htaccess in Lokalem WWW-Verzeichnis
>IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
>/IfModule>
#funktioniert bei mir supper !!! Bitte korrekte Tag-Zeichen verwenden !!!
#Danke für dieses Buch, war eine echte Hilfe
nicht aktiviert
und wenn es nicht aktiviert ist, was macht man dann?
mod_rewrite
Laut info.php ist mod_rewrite aktiviert, oder verstehe ich da was falsch?
Loaded Modules
core mod_log_config mod_logio prefork http_core mod_so mod_rewrite mod_php5 mod_cgi mod_dav mod_dav_fs mod_include mod_actions mod_mime_magic mod_cache mod_disk_cache mod_proxy mod_proxy_http mod_deflate mod_status mod_autoindex mod_mime mod_negotiation mod_alias mod_auth_basic mod_authz_user mod_authz_host mod_authz_groupfile mod_authn_file mod_setenvif mod_dir mod_env mod_headers mod_vhost_limit mod_evasive20
Was macht man dann?
Beste Grüße,
Zucker
Manchmal ist die Reihenfolge der Module wichtig
Ich hatte das mal bei einer älteren SuSu Installation. Da war die Reihenfolge, in der die Module geladen werden ausschlaggebend.
AllowOverride All
Dem Webserver (ich geh mal davon aus das es sich um einen Apache handelt) muss man noch sagen, das es per .htaccess Datei erlaubt ist, Konfigurationsparameter des Webservers zu überschreiben.
Zu Testzwecken kannst Du einfach aus dem AllowOverride None in der httpd.conf (oder in der jeweiligen vhosts.conf, hängt von deiner Linux-Distribution ab) einfach mal ein AllowOverride All machen.
Dann sollte es laufen (den Apache neu starten nicht vergessen).
Aber Achtung, das solltest du wirklich nur auf einem Testserver mit der Direktive All machen.