Семантические URL для статических файлов HTML с .htaccess и mod_rewrite - PullRequest
7 голосов
/ 14 мая 2010

mod_rewrite всегда сбивает меня с толку ... может кто-нибудь сказать мне правила, которые мне нужны, чтобы получить следующие чистые URL? Желаемый URL слева, реальный URL справа.

/our-work/ => /our-work.html
/our-work/some-project/ => /our-work/some-project.html
/contact/ => /contact.html

Как видите, я хочу принудительно использовать косые черты на всех URL-адресах.

Спасибо!

1 Ответ

10 голосов
/ 14 мая 2010

Попробуйте это правило:

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)/$ $1.html [L]

И для добавления конечных слешей:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ %{REQUEST_URI}/ [L,R=301]

Убедитесь, что поставлены те правила, которые вызывают внешнее перенаправление (явно используя R флаг или неявно) перед теми правилами, которые просто вызывают внутреннее перенаправление / перезапись.Так что в этом случае:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ %{REQUEST_URI}/ [L,R=301]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)/$ $1.html [L]
...