0

私が抱えている問題は、最初の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エラーの場合はループは発生しません。

アイデア?

4

1 に答える 1

1

これをHTMLセクションの下に置いてみてください。

RewriteCond %{REQUEST_FILENAME} !-d

フラグ-fを使用すると、ファイルがルールで考慮されなくなりますが、これによりディレクトリが除外されます。

于 2012-07-02T20:09:56.113 に答える