mod_rewrite всегда экранирует меня... кто-либо может сказать мне правила, я должен получить следующие чистые URL? Желаемый URL слева, реальный URL справа.
/our-work/ => /our-work.html
/our-work/some-project/ => /our-work/some-project.html
/contact/ => /contact.html
Как Вы видите, я хочу вызвать запаздывание наклонных черт на всех URL также.
Спасибо!
Попробуйте это правило:
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]