2010-01-31 7 views
0

У меня есть сайт с CMS, который использует mod_rewrite, чтобы URL выглядел чище. Ранее чистые URL-адрес имели расширение .htm, но я хочу, чтобы перейти это им появляться как поддельные подкаталогами, IE:Mod_rewrite .htm to поддельный подкаталог

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

У меня есть два правила перезаписи в месте, чтобы переписать как старую схему и потенциальные нового один:

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

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

Моя проблема в том, что правило, которое я пытался использовать для перенаправления старых URL-адресов на новые, ничего не делает.

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

ответ

1

Вы не можете использовать два правила с тем же шаблоном, что и первый из них. Попробуйте заменить правило «переписать» на новое правило «перенаправления», чтобы перенаправить старые URL-адреса, а не просто переписать:

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

Спасибо. Для записи правило, которое я использовал: RewriteRule^(. +) \. Htm $ http://www.example.com/$1/ [R, NC, QSA] – Gelatin

Смежные вопросы