しようとしていくつかの問題があります
1)拡張機能を削除するには、htaccessファイルでこれを使用してみました。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
ただし、<a href="abcde.html"></a>
などのHTMLのリンクをクリックしても、URLから.htmlが削除されず、www.website.com/abcde.html
のままになります
2)これを使用してindex.htmlを削除しようとしました
RewriteCond %{THE_REQUEST} \/index\.(php|html)\ HTTP [NC]
RewriteRule (.*)index\.(php|html)$ /$1 [R=301,L]
しかし、サーバーにindex.htmlファイルをロードすると、URLは次のようになります
www.website.com/folder//
最後に余分な/
が残っています。
誰も私を助けることができますか?
Anagioが提供した答えに基づいて、すべての要件をカバーしましょう。
/path/to/file
が存在する場合、/path/to/file.html
などのリクエストで.htmlファイルを透過的に提供する/path/to/file.html
に対する直接リクエストを拒否する/index.html
に対するリクエストで/
を提供するディレクトリ構成:
Options +FollowSymLinks -MultiViews
DirectoryIndex index.html
RewriteEngine On
#
# Rewrite valid requests on .html files
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html?rw=1 [L,QSA]
#
# Return 404 on direct requests against .html files
RewriteCond %{REQUEST_URI} \.html$
RewriteCond %{QUERY_STRING} !rw=1 [NC]
RewriteRule ^ - [R=404]
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
# To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]