私が抱えている問題は、最初のURLが機能し、2番目のURLが機能しないことです。
http://www.example.com/podcasts
http://www.example.com/podcast
これらは両方ともHTMLファイルであるため、2番目のファイルに.htmlを追加すると機能します。リダイレクトの問題が発生するのは、html拡張機能が削除されたとき(これが私が望んでいることです)だけです。
問題は、「ポッドキャスト」がフォルダとhtmlファイルの両方であるということだと思います。つまり、「podcast」というフォルダがあり、podcast.htmlというファイルもあり、その拡張子は自動的に削除されます(これは私の意図でした)。
では、どうすればこのリダイレクトの問題を修正できますか?フォルダとhtmlの名前を同じにし、html拡張子を現在のように削除したいと思います。
これが私の.htaccessファイルのコピーです(編集:Lフラグを追加しました)
RewriteEngine On
RewriteBase /
#removing trailing slash
RewriteRule ^(.*)/$ $1 [R=301,L]
#non www to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
#shtml
AddType text/html .html
AddHandler server-parsed .html
#html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
#index redirect
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://example.com/ [R=301,L]
%{REQUEST_FILENAME}!-fに関連するRewriteRuleが問題の原因であることを確認してください。404エラーの場合はループは発生しません。
アイデア?