Zur Zeit verwende ich das Strickmuster https://domain.invalid/foo/bar/, das per .htaccess passend umgeleitet wird. Groß war mein Schreck, als ich feststellen mußte, daß Yahoo immer nur auf https://domain.invalid/foo/bar verlinkte und somit Fehlermeldungen produzierte. Da dies ein bekanntes Problem zu sein scheint, gegen das man erstmal machtlos ist, werden Anfragen an /foo/bar jetzt immer auf /foo/bar/ mit Meldung 301 weitergeleitet.
Beim Verfolgen meiner internen Links sind sich aber alle Suchmaschinen einig und verwenden immer die Trailing Slashes.
Wäre es im Zuge einer Umstrukturierung nun eigentlich sinnvoller, die .htaccess dahingehend zu modifizieren, daß ich mich den Gepflogenheiten einiger Suchmaschinen anpasse und generell nur noch ohne Trailing Slashes arbeite?
technisch richtiger ist es wohl mit slashes, denn so läuft es auch normalerweise, wenn es sich um echte verzeichnisse handelt.
auch der internet explorer verzichtet aber zb in der history gern mal auf die slashes, deswegen ist es das einzig richtige, was du jetzt gemacht hast, ohne slash per 301 auf mit slash weiterleiten.
Die Alternative wäre, jeweils auf https://domain.invalid/foo/bar.php zu verlinken, denn intern arbeite ich eh mit mod_rewrite, der Aufwand wäre also nicht größer, und ich würde die Weiterleitung per 301 umgehen, weil sowohl Suchmaschinen als auch echte Besucher gleich an der richtigen Adresse wären. Spricht etwas dafür, eine der Methoden zu bevorzugen?
Ich spiele gerade etwas an der .htaccess herum und habe vielleicht einen Denkfehler.
Es gibt Seiten, die benötigen nur einen Parameter, zum Hinzufügen des Trailing Slash verwende ich dies:
RewriteCond %{REQUEST_URI} ^/foo/(.*)
RewriteRule ^(.*) /$1/ [L,R]
Dann gibt es noch Seiten mit zwei Parametern, da funktioniert das Rewrite nur, wenn ich in der letzten Zeile den letzten Slash weglasse:
RewriteCond %{REQUEST_URI} ^/foo/(.*)/(.*)
RewriteRule ^(.*) /$1/$2 [L,R]
Und nachdem ich in https://www.php-resource.de/tutorials/read/10/1/ einiges über reguläre Ausdrücke gelesen habe, ist mir immer noch nicht klar, warum es besser wäre, anstatt
RewriteCond %{REQUEST_URI} ^/foo/(.*)/(.*)
lieber
RewriteCond %{REQUEST_URI} ^/foo/(.*)/(.*)$
zu schreiben. Gibt es da vielleicht etwas Empfehlenswerteres zum Durchlesen?