Mod_rewrite .htm в поддельный подкаталог - PullRequest
0 голосов
/ 31 января 2010

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

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 Ответ

1 голос
/ 31 января 2010

Вы не можете использовать два правила с одинаковым шаблоном, так как будет применено только первое из них. Попробуйте заменить правило «перезаписи» новым правилом «перенаправления», чтобы перенаправлять старые 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...