ランディングページから.html
を削除しようとしていますが、domain.com/contact.html
の代わりにdomain.com/contact
になりますが、同時に.html
を保持しますWebサイト内のフォルダー。したがって、domain.com/components/file.html
は.html
のままです。
つまり、ランディングページにリダイレクトしますが、サーバー上の他のすべてのファイルにはリダイレクトしません。
これは、.html
を削除するために現在使用しているコードですが、他のすべてのディレクトリに対しても削除します。
#example.com/page will display the contents of example.com/page.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]
#301 from example.com/page.html to example.com/page
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
この件について誰かアドバイスはありますか?
気にしないで、私は解決策を見つけました:
DirectorySlash Off
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.html[\s?/] [NC]
RewriteRule ^(.[^\/]*)$ /%1%2 [R=302,L,NE]
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*) /$1.html [L]