具有.htaccess和mod_rewrite的静态HTML文件的语义URL

Ali*_*olt 7 .htaccess mod-rewrite clean-urls

mod_rewrite总是让我感到困惑...任何人都可以告诉我获取以下干净URL所需的规则吗?左侧所需的URL,右侧的真实URL.

/our-work/ => /our-work.html
/our-work/some-project/ => /our-work/some-project.html
/contact/ => /contact.html
Run Code Online (Sandbox Code Playgroud)

如您所见,我也希望在所有URL上强制使用斜杠.

谢谢!

Gum*_*mbo 10

试试这条规则:

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

并添加尾部斜杠:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ %{REQUEST_URI}/ [L,R=301]
Run Code Online (Sandbox Code Playgroud)

确保将那些导致外部重定向的规则(显式地使用R标志或隐式)放在那些仅导致内部重定向/重写的规则之前.所以在这种情况下:

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