/ / Mod_rewrite .htm zum falschen Unterverzeichnis - Apache, .htaccess, mod-rewrite

Mod_rewrite .htm zum falschen Unterverzeichnis - Apache, .htaccess, mod-rewrite

Ich habe eine Website mit einem CMS, das mod_rewrite verwendetURLs sauberer aussehen lassen. Zuvor hatten die sauberen URLs die Erweiterung .htm, aber ich möchte dies so ändern, dass sie als gefälschte Unterverzeichnisse erscheinen:

http://www.example.com/pagename/

Ich habe zwei Umschreiberegeln, um sowohl das alte als auch das potentielle neue umzuschreiben:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+).htm$ index.php?page=$1 [QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ index.php?page=$1 [QSA]

Mein Problem ist, dass die Regel, die ich versuchte, um alte URLs zu neuen umzuleiten, nichts tut.

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+).htm$ $1/ [R=302,NC,QSA]

Antworten:

1 für die Antwort № 1

Sie können nicht zwei Regeln mit demselben Muster verwendenda nur der erste von ihnen angewendet wird. Versuchen Sie, Ihre Regel "rewrite" durch die neue Regel "redirect" zu ersetzen, um die alten URLs umzuleiten, anstatt sie einfach neu zu schreiben:

# redirect foo.htm to foo/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+).htm$ $1/ [R=301,NC]
# rewrite foo/ to index.php?page=foo
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ index.php?page=$1 [QSA]