Bob: mod_rewrite

Beitrag lesen

/news/the-title-of-the-news ODER mit / am Ende (beides soll möglich sein => 1. Problem) (bustaben und bindestrich gemischt)
"/?" könnte sein
Da ist dann ein Problem mit dem Browser, weil der sich dann in einem anderen Verzeichniss "fühlt", kann man das außer mit absoluten Pfaden umgehen?

Na ja, du kannst das natürlich mit gezielten Redirects wieder gerade biegen, wenn davon aber auch HTML-Links betroffen sind, würde ich doch davon abraten. Zumindest mit dem HTML-Element <base href...> könntest du das HTML-technisch richten.

Im Moment ist es folgende Zeile, die einen mehrfachen #500 erzeugt, der (laut Logfile) nach 10 inneren Fehlern gesendet wurde:

RewriteRule (\w+).php$ /cms.php?page=$1

Ja, weil auch cms.php wieder auf die Regel passt. Entweder schließt du existierende Dateien oder bestimmte Pfade oder internal redirects, aus siehe cond. unten (letztere behebt nicht das Problem, wenn die existierende foo.php aufgerufen wird, diese landet dann auch auf /cms.php?page=foo). Deine RegEx ist auch nach links offen, d.h. foo/bar.php würde auch passen und auf /cms.php?page=bar landen. Planmäßig?

#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_URI} !^/(foo|cms).php$
#RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteRule (\w+).php$ /cms.php?page=$1 [L]