/ / Mod_rewrite .htm do fałszywego podkatalogu - apache, .htaccess, mod-rewrite

Mod_rewrite .htm do fałszywego podkatalogu - apache, .htaccess, mod-rewrite

Mam stronę z CMSem, który używa mod_rewriteaby adresy URL wyglądały czystsze. Wcześniej czyste adresy URL miały rozszerzenie .htm, ale chcę je przekazać jako fałszywe podkatalogi, IE:

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

Mam dwie reguły przepisywania, aby przepisać zarówno stary schemat, jak i nowy:

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

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

Mój problem polega na tym, że zasada, której próbowałem użyć, aby przekierować stare adresy URL do nowych, nic nie robi.

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

Odpowiedzi:

1 dla odpowiedzi № 1

Nie możesz użyć dwóch reguł o tym samym wzorzeponieważ tylko pierwsza z nich zostanie zastosowana. Spróbuj zastąpić regułę "przepisywania" nową regułą "przekierowania", aby stare przekierowania były przekierowywane zamiast tylko przepisywane:

# 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]