web-dev-qa-db-ja.com

.htaccess-ホームページから.htmlを削除しますが、そのWebサイト内のフォルダーからは削除しません

ランディングページから.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]

この件について誰かアドバイスはありますか?

4
Jane

気にしないで、私は解決策を見つけました:

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]
3
Jane